我有三个Textfields tfNet,tfVat和tfGross。 (对于我的应用程序,我使用java赚钱。在此示例中使用double。)
我想要的: 当我更改tfNet时,它应该更新
tfGross.setText("" + (Double.parseDouble(tfNet.getText()) *
(1 + Double.parseDouble(tfVat.getText()) / 100)));
当我改变tfVat时
tfNet.setText("" + (Double.parseDouble(tfGross.getText()) /
(1 + Double.parseDouble(tfVat.getText()) / 100)));
当我改变tfGross
时tfNet.setText("" + (Double.parseDouble(tfGross.getText()) /
(1 + Double.parseDouble(tfVat.getText()) / 100)));
我尝试使用TextFormatter来处理所有三个Textfield但是陷入了循环。
然后尝试使用NumberBinding,但无法弄清楚如何操作。
JavaFx的方法是什么?
1)将SimpleDoubleProperty绑定到Textfield并将addListener绑定到DoubleProperty?
或
2)或TextField上的setOnAction?
有一种简单的方法吗?
答案 0 :(得分:0)
您可以为每个TextField textProperty()
添加侦听器并在其中应用逻辑。
例如,如果您想要将更改侦听器添加到tfNet
,您可以写:
tfNet.textProperty().addListener((ov, oldValue, newValue) -> {
// Proper checks for Text as Double
tfGross.setText("" + (Double.parseDouble(tfNet.getText()) *
(1 + Double.parseDouble(tfVat.getText()) / 100)));
});