我有10个TextFields,由2列5组成。我希望禁用某个按钮,直到所有这些文本字段都写入其中。我使用Java 1.7 - 我发现的所有示例都是针对Java 6(已弃用)和8.
有人可以引导我完成这个吗?我只想要一个按钮,只有在填写完所有文本字段后才能启用。任何帮助都非常感谢。
答案 0 :(得分:0)
在填写第十个文本字段后,该按钮将变为启用状态。您无法知道哪个文本字段将是第十个,因此您可能要做的是为每个按钮添加change listener,并在监听器内检查10个字段是否为非空。这是tutorial和example。
答案 1 :(得分:0)
在java 7中,您不能使用lambda表达式,因此您必须以旧方式执行此操作。
随意格式化代码原因是使用手机编写的。
一种快速的方法是在每个TextField
添加一个更改侦听器,它的textproperty()就像这样:
ChangeListener listener = new ChangeListener() {
@Override
public void changed(ObservableValue observable, String oldValue, String newValue) {
boolean visible = true;
for (TextField field : fieldsArray)
if (field.getText().isEmpty()) {
visible = false;
break;
}
button.setVisible(visible);
}
};
textField.textProperty().addListener(changeListener);
请记住,可以多次添加一个侦听器。
这里更好的方法是将Button visibleProperty()
绑定到这样的SimpleBooleanProperty
:
BooleanProperty visibleProperty = new SimpleBooleanProperty();
button.visibleProperty.bind(visibleProperty);
然后在更改侦听器中进行一些修改:
ChangeListener listener = new ChangeListener(){
@Override
public void changed(ObservableValue observable, String oldValue, String newValue) {
boolean visible = true;
for(TextField field:fieldsArray)
if(field.getText().isEmpty()){
visible=false;
break;
}
visibleProperty.set(visible);
}
};