JafaFX-8:ComboBox - 观察场模糊的新旧值

时间:2016-12-12 08:27:20

标签: model-view-controller javafx-8 scenebuilder

是否可以获得之前的&当前模糊的JavaFX 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();
   }
}

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

到目前为止我尝试过的事情: 尝试在调试时观察组合框并寻找可能的属性,我可以获得之前和当前的值,但我无法。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我认为您应该使用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);

        }
    });
祝你好运!