我有一个组合框cb
和ObservableList<StringProperty> data
我已绑定了cb
的Items
到data
如下:
Bindings.bindContent(cb.getItems(), data);
假设data
具有以下各项:str1, str2, str3, str4
当我更改时data
,组合框毫无问题地获取了新列表。但是,如果str3
在选择cb
和更改的值str3
,以NewStr3
数据,这种变化是没有得到显示CB。有时显示的列表也是错误的(它显示的是str3而不是NewStr3),尽管它所引用的基础数据是正确的。
更改基础模型时,如何强制组合框显示新值?
组合框中的所选项目不需要成为组合框的项目列表的元素。(例如,在一个可编辑的组合框中,您可以键入不在列表中的项目。)如果从这个角度考虑示例,它的行为就像您描述的那样就不足为奇了。
如果要在该列表可能发生更改时强制将选定值作为基础列表的元素,则需要定义如果列表以不再包含所选项目的方式更改时所选项目应如何更改如何执行此操作并不明显,并且可能取决于您的应用程序逻辑)。知道要执行的操作后,您可以使用ListChangeListener
:
cb.getItems().addListener((ListChangeListener.Change change) -> {
String newSelectedItem = ... ; // figure item that should be selected instead
cb.setValue(newSelectedItem);
});
最简单的实现是just cb.setValue(null);
,这意味着如果列表发生更改,则不再选择任何项目,从而不再包含当前选择的项目。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句