2016-12-12 9 views
0

フィールドブラーでJavaFX ComboBoxの現在選択されているテキスト値を&にすることはできますか?JafaFX-8:ComboBox - フィールドのぼかしの古い値と新しい値を見る

サンプル:コンボボックスのフォーカスオン
- 値がブラーの「項目A」
ある - 新しい値は、私が「行方不明の論理」部分になります何かを探しています「項目B」

です以下の下:

public void foo(){ 
    myComboBox.focusedProperty().addListener((observable, oldProp, newProp) -> doSomething(newProp, myTextField)); 
} 

private void doSomething(boolean isFocused, TextField myTextField){ 
    if(isFocused){ 
    // Do something 
    } else { 
    // =====MISSING LOGIC===== 
    // I need to check whether myComboBox value has changed during this 
    // field blur before doing something with myTextField 

    updateTextFieldValue(); 
    } 
} 

私は何とか私が欲しいものを達成するために代わりfocusedPropertyのvaluePropertyリスナーを使用することができることを知っていますが、私は簡単に現在のコードに合う方法を探しています。

これまでに試したこと: デバッグ時にコンボボックスを見てみて、以前の値と現在の値を取得できる可能性のあるプロパティを探してみましたが、できませんでした。

ありがとうございました!

cb.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<String>() { 

     @Override 
     public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) { 

      if(oldValue != null){ 

       System.out.println("Old: " + oldValue); 

      }else{ 

       System.out.println("no older value"); 

      } 

      System.out.println("New: " + newValue); 

     } 
    }); 

幸運を:私はLambdasを使用できない場合、私はあなたがそれを行うためにSelectionModelを使うべきだと思う

答えて

1

は、focusedProperty()は申し訳ありませんコントロール自体ではないアイテムのためである、と!

+0

お寄せいただきありがとうございます!私はvalueProperty()を試していましたが、私もselectionModelを試しました。両方とも、毎回cb.setValue(foo)をトリガしています。 (私はselectionModel.selectedItemProperty()に対して奇妙なことだと思います)。残念ながら、私はぼかしの値を取得する方法を見つけることができませんでした。私はリファクターを2つ持っているリファクターを持っていました。フォーカスされたpropのためのものとselectedItemのものです。とにかく、もう一度ありがとう! – iamkenos

関連する問題