2023-02-17 437
我正在尝试重置ComboBox喜欢的选择:
// private ListView<MyEntityType> f_lItems
f_lItems.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<Object>() {
@Override
public void changed(ObservableValue<?> ov, Object t, Object t1) {
if (t1 != null && t1 instanceof MyEntityType) {
MyEntityType pv = (MyEntityType) t1;
// do some condition testing
if (condition) {
// accept
} else
// roll back to previous item
f_lItems.getSelectionModel().select((MyEntityType) t);
}
}
}
});
因此,在尝试将列表重置为旧值之后,我得到了这个例外:
Exception in thread "JavaFX Application Thread" java.lang.IndexOutOfBoundsException
at com.sun.javafx.scene.control.ReadOnlyUnbackedObservableList.subList(Unknown Source)
at javafx.collections.ListChangeListener$Change.getAddedSubList(Unknown Source)
at com.sun.javafx.scene.control.behavior.ListViewBehavior.lambda$new$177(Unknown Source)
at javafx.collections.WeakListChangeListener.onChanged(Unknown Source)
at com.sun.javafx.collections.ListListenerHelper$Generic.fireValueChangedEvent(Unknown Source)
似乎我没有得到这种情况的基本行为.
有人有建议我如何完成这项工作?
预先感谢
亚当
根据您的评论,您想要的是:当更改ComboBox的(选择)值时,检查条件,然后如果不满足此条件,请恢复对前一个的值.
为此,您可以使用 combobox的valueproperty与听众.听众主体只是为了检查条件,值更新嵌套在Platform.runLater{…}块中.
示例
在示例中,它是ComboBox,只能设置为”两个”.
ComboBox<String> cb = new ComboBox<String>(FXCollections.observableArrayList("One", "Two", "Three", "Four"));
cb.valueProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
// If the condition is not met and the new value is not null: "rollback"
if(newValue != null && !newValue.equals("Two")){
Platform.runLater(new Runnable(){
@Override
public void run() {
cb.setValue(oldValue);
}});
}
}
});
…否则您可以使用 SelectedItemproperty 也具有相同的结构…
cb.getSelectionModel().selectedItemProperty().addListener((obs, oldVal, newVal)->{
if(newVal != null && !newVal.equals("Two")){
Platform.runLater(() -> cb.setValue(oldVal));
}
});
注意:此解决方案不是”防止”选择,就像标题中一样:”滚动”已经执行的选择.
以上所述是小编给大家介绍的Javafx Combox onChangelistener回滚更改,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/34138.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态