点击按钮直到填写了10个文本字段

时间:2016-08-13 23:23:14

标签: java javafx

我有10个TextFields,由2列5组成。我希望禁用某个按钮,直到所有这些文本字段都写入其中。我使用Java 1.7 - 我发现的所有示例都是针对Java 6(已弃用)和8.

有人可以引导我完成这个吗?我只想要一个按钮,只有在填写完所有文本字段后才能启用。任何帮助都非常感谢。

2 个答案:

答案 0 :(得分:0)

在填写第十个文本字段后,该按钮将变为启用状态。您无法知道哪个文本字段将是第十个,因此您可能要做的是为每个按钮添加change listener,并在监听器内检查10个字段是否为非空。这是tutorialexample

答案 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);  
                  } 
 };