使用Java FX 8,我有两个文本字段和一个要验证的按钮。我希望在两个字段都有有效值之前禁用此按钮。
这样做的最佳方式是什么?
谢谢,
答案 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
}
}
});