1 回答

TA貢獻(xiàn)1963條經(jīng)驗(yàn) 獲得超6個贊
因此,您遇到的問題是從文本字段中獲取字符串并對其進(jìn)行數(shù)學(xué)運(yùn)算。
解決此問題的方法是通過執(zhí)行以下操作將字符串解析為整數(shù):
int baseCost = Integer.parseInt(textField.getValue());
這將為您提供整數(shù)形式的基本成本,然后您可以使用類似的方法將其乘以滑塊中的數(shù)字?,F(xiàn)在,您可以priceTextField通過執(zhí)行以下操作來設(shè)置值:
//totalCost is an integer value calculated by multiplying the base cost and the slider's value.
priceTextField.textProperty().setValue(Integer.toString(totalCost));
我希望這有幫助!
對于您的新問題,這就是它發(fā)生的原因:
您遇到問題的原因是每次更改滑塊中的值時,您都設(shè)置priceTextField為daySlidertimes i。然后,下次發(fā)生更改時,您設(shè)置i的值等于priceTextField. 這就是為什么它要進(jìn)行多次乘法運(yùn)算。
如果我沒記錯的話,您嘗試做的是將 TextField 值乘以 Slider 值并將其顯示在另一個 TextField 中。因此,您可以做的就是int i = Integer.parseInt(textField.getValue())獲得基本成本的價值。然后,您可以將其乘以該daysSlider值并執(zhí)行priceTextField.textProperty().setValue(
Integer.toString(i * sliderValue);
要解決您的新問題:
ArrayList<Integer> baseCost = new ArrayList<>();
priceTextField.valueProperty().addListener(new ChangeListener(){
@Override
public void changed(ObservableValue arg0, Object arg1, Object arg2) {
baseCost.add(Integer.parseInt(priceTextField.getText()));
}
}
daysSlider.valueProperty().addListener(new ChangeListener() {
@Override
public void changed(ObservableValue arg0, Object arg1, Object arg2) {
priceTextField.textProperty().setValue(
String.valueOf((int) daysSlider.getValue() * baseCost.get(0) ));
}
});
回答您的第三個問題(可以在聊天中找到):
這是您制作可運(yùn)行文件的方式:
daysSlider.valueProperty().addListener(new ChangeListener() {
@Override
public void changed(ObservableValue arg0, Object arg1, Object arg2) {
Runnable r = new Runnable() {
@Override
public void run() {
priceTextField.textProperty().setValue(
String.valueOf((int) daysSlider.getValue() * baseCost.get(0) ));
}
};
Handler handler = new Handler();
//Run the runnable after 3000 milliseconds or 3 seconds.
handler.postDelayed(runnable, 3000);
}
});
添加回答
舉報