是否可以获得之前的&当前模糊的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来实现我想要的但我正在寻找一种更容易适应当前代码的方法。
到目前为止我尝试过的事情: 尝试在调试时观察组合框并寻找可能的属性,我可以获得之前和当前的值,但我无法。
感谢您的帮助!
答案 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);
}
});
祝你好运!