How to disable Button when TextField is empty?

后端 未结 3 1940
暖寄归人
暖寄归人 2020-11-27 06:03

In the following code I have a TextField and a Button. I need to disable the Button when ever the TextField is empty, so that I can avoid entering empty values to the databa

相关标签:
3条回答
  • 2020-11-27 06:48

    Similar to Uluk's answer, but using the Bindings fluent API:

    btn.disableProperty().bind(
        Bindings.isEmpty(textField1.textProperty())
        .and(Bindings.isEmpty(textField2.textProperty()))
        .and(Bindings.isEmpty(textField3.textProperty()))
    );
    

    Also note that, this new overloaded method of Bindings is added in JavaFX-8 and not avaliable in JavaFX-2.

    0 讨论(0)
  • 2020-11-27 06:51

    The other way can be using bindings:

    final TextField textField1 = new TextField();
    final TextField textField2 = new TextField();
    final TextField textField3 = new TextField();
    
    BooleanBinding bb = new BooleanBinding() {
        {
            super.bind(textField1.textProperty(),
                    textField2.textProperty(),
                    textField3.textProperty());
        }
    
        @Override
        protected boolean computeValue() {
            return (textField1.getText().isEmpty()
                    && textField2.getText().isEmpty()
                    && textField3.getText().isEmpty());
        }
    };
    
    Button btn = new Button("Button");
    btn.disableProperty().bind(bb);
    
    VBox vBox = new VBox();
    vBox.getChildren().addAll(textField1, textField2, textField3, btn);
    
    0 讨论(0)
  • 2020-11-27 07:03

    use textProperty() Listener for TextField

    try this...

    Button b1 = new Button("DELETE");
    b1.setFont(Font.font("Calibri", FontWeight.BOLD, 17));
    b1.setPrefSize(100, 30);
    b1.setStyle(" -fx-base: #ffffff;");
    b1.setTextFill(Color.BLACK);
    
    b1.setDisable(true); // Initally text box was empty so button was disable
    
    txt1.textProperty().addListener(new ChangeListener<String>() {
    
            @Override
            public void changed(ObservableValue<? extends String> ov, String t, String t1) {
                //System.out.println(t+"====="+t1);
               if(t1.equals(""))
                   b1.setDisable(true);
               else
                   b1.setDisable(false);
            }
        });
    
    0 讨论(0)
提交回复
热议问题