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);
}
});
祝你好运!
是否可以在字段模糊上获取 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);
}
});
祝你好运!