2016-08-13 5 views
0

5個の2列に整理された10個のテキストフィールドがあります。これらのテキストフィールドにすべてテキストフィールドが書き込まれるまで、一定のボタンを無効にします。私はJava 1.7を使用しています - 私が見つけたすべての例は、Java 6(廃止予定)と8のためのものです。10個のテキストフィールドが入力されるまでボタンをオフにする

誰もが私を通って私を歩くことができますか?私は単にボタンがすべてのテキストフィールドが満たされた後に有効にしたいだけです。どんな助けも高く評価されます。

答えて

0

ボタンは、10番目のテキストフィールドが入力された後に有効になります。10番目のテキストフィールドを知る方法がないため、それぞれのボタンにchange listenerを追加します。リスナーは、10個のフィールドが空でないかどうかをチェックします。 tutorialexampleがあります。

+0

異なる答えが指摘したように、ラムダはJava 7では使用できません – yitzih

0

Java 7では、ラムダ式を使用することはできませんので、古い方法で行う必要があります。

電話を使って書かれたコードの原因をフォーマットしてお気軽

...

一つの高速な方法は、それがこのようなtextproperty()だ時に各 TextField変更リスナーに追加することです

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

ことを忘れないでくださいが1つのリスナーを複数回追加できます。ここでは、より良い

何かがこのようなSimpleBooleanPropertyにボタンvisibleProperty()をバインドするために、次のようになります。

変更リスナーで、その後はほとんど変更が行われるウィル
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); 
        } 
}; 
関連する問題