【问题标题】:Problem updating the TextField field value更新 TextField 字段值时出现问题
【发布时间】:2018-11-14 09:25:38
【问题描述】:

我有 4 个文本字段,我已经将它们格式化为只接收整数值。

我现在希望“资本”字段在每次更新其值时实时接收所有其他字段的总和;

我尝试了绑定但我不太了解,我也尝试在底部字段上添加监听器以更新“资本”的值但它没有按我的意愿做出反应

【问题讨论】:

    标签: javafx binding textfield jfoenix


    【解决方案1】:

    下一段代码展示了如何绑定三个 TextField:

    import javafx.application.Application;
    import javafx.beans.binding.Bindings;
    import javafx.beans.binding.StringBinding;
    import javafx.scene.Scene;
    import javafx.scene.control.TextField;
    import javafx.scene.layout.VBox;
    import javafx.stage.Stage;
    
    public class Test extends Application {
    
        @Override
        public void start(final Stage primaryStage) {
    
            final VBox vBox = new VBox();
    
            final TextField textField1 = new TextField();
            final TextField textField2 = new TextField();
            final TextField textField3 = new TextField();
            final TextField textField4 = new TextField();
    
            final StringBinding createStringBinding = Bindings.createStringBinding(()-> {
                String valueTextField1 = (textField1.getText().isEmpty()) ? "0" : textField1.getText();
                String valueTextField2 = (textField2.getText().isEmpty()) ? "0" : textField2.getText();
                String valueTextField3 = (textField3.getText().isEmpty()) ? "0" : textField3.getText();
                return String.valueOf(Integer.valueOf(valueTextField1) + Integer.valueOf(valueTextField2) + Integer.valueOf(valueTextField3));}, textField1.textProperty(), textField2.textProperty(), textField3.textProperty());
    
            textField4.textProperty().bind(createStringBinding);
    
            vBox.getChildren().add(textField1);
            vBox.getChildren().add(textField2);
            vBox.getChildren().add(textField3);
            vBox.getChildren().add(textField4);
    
            final Scene scene = new Scene(vBox, 400, 200);
            primaryStage.setScene(scene);
            primaryStage.show();
        }
    
        public static void main(final String[] args) {
            launch(args);
        }
    }
    

    【讨论】:

    • 非常感谢您的代码完美运行,非常感谢您救了我
    【解决方案2】:

    您可以使用Bindings.createStringBinding 来实现这一点,记得在dependencies 参数中包含所有4 个文本字段

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多