2016-08-13 37 views
0

我有10個TextFields,分爲2列5.我想要一個特定的按鈕被禁用,直到所有這些文本框都寫入了文本。我正在使用Java 1.7 - 我找到的所有示例都是針對Java 6(已棄用)和8.去掉一個按鈕,直到10個文本框被填充

任何人都可以通過此操作來找到我?我只是想要一個按鈕,只有在所有的文本框都被填充後才能使用。任何幫助,高度讚賞。

回答

0

按鈕將在第十個文本字段填充後變爲啓用。您無法知道哪個文本字段將是第十個,因此您可能想要執行的操作是向每個按鈕添加一個change listener,並在監聽器檢查10個字段是否非空。這裏有一個tutorial和一個example

+0

作爲一個不同的答案中指出,Java 7中不允許使用lambda表達式 – yitzih

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); 

記住一個聽衆可以添加多次。

東西更好地在這裏將綁定按鈕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); 
        } 
}; 
相關問題