JavaFX-8:ComboBox - 观察字段模糊的旧值和新值

JafaFX-8: ComboBox - watch the old and new values on field blur

是否可以在字段模糊上获取 JavaFX ComboBox 的先前和当前选定文本值?

样本:
在组合框焦点上 - 值为 'Item A'
模糊 - 新值为 'Item B'

我正在寻找将在下面的 'missing logic' 部分继续的内容:

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

我知道我可以以某种方式使用 valueProperty 侦听器而不是 focusedProperty 来实现我想要的,但我正在寻找一种更适合当前代码的方法。

到目前为止我尝试过的: 已尝试在调试时查看组合框并寻找可能的属性,我可以在其中获取先前和当前值但无法获取。

感谢您的帮助!

我认为你应该使用 SelectionModel 来做到这一点,focusedProperty() 用于控制本身而不是项目,如果我不能使用 Lambdas :

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

        }
    });

祝你好运!