如何在某些文本字段填满之前禁用按钮?

时间:2015-09-11 15:07:04

标签: java javafx

使用Java FX 8,我有两个文本字段和一个要验证的按钮。我希望在两个字段都有有效值之前禁用此按钮。

这样做的最佳方式是什么?

谢谢,

2 个答案:

答案 0 :(得分:8)

使用bindings

给出

TextField textField1  ;
TextField textField2  ;

你可以做到

BooleanBinding textField1Valid = Bindings.createBooleanBinding(() -> {
    // check textField1.getText() and return true/false as appropriate
}, textField1.textProperty());

BooleanBinding textField2Valid = Bindings.createBooleanBinding(() -> {
    // check textField2.getText() and return true/false as appropriate
}, textField2.textProperty());

然后

Button button = new Button("OK");
button.disableProperty().bind(textField1Valid.not().or(textField2Valid.not()));

答案 1 :(得分:1)

这个问题有几个答案。我会发布简单的答案。只需在按钮动作监听器中添加一个布尔值和一个if-else语句。如果满足条件,请运行按钮。别无所求。您还可以根据是否满足此条件来设置背景颜色。为了更好地可视化按钮被禁用。

btn.setOnAction(new EventHandler<ActionEvent>() {

    @Override
    public void handle(ActionEvent event) {
        if(true){ // your boolean operator 
           System.out.println("do something"); // Your button statement 
        }
    }
});