我创建了一个扩展JComboBox的类。模型设置如下:
DefaultComboBoxModel<String> readoutModel = new DefaultComboBoxModel<String>(options.toArray(new String[options.size()]));
setModel(readoutModel);
该类实现一个侦听器接口来侦听另一个类(myModel)的更改。这些更改可能与该组合框完全无关,它可能包含选择更改,并且可能包含该组合框的内容更改。
很容易改变选择:
@Override
public void modelChanged() {
...
setSelectedItem(myModel.getSelectedReadOut());
}
但如果需要更改组合框的内容呢?我应该更换组合框模型吗?我是否需要对项目进行交互并将它们与myModel中的项目进行比较?我还可以从组合框模型中删除所有项目,然后从myModel逐项添加? (如果只是选择改变,也会发生......)。
答案 0 :(得分:2)
更改基础数据时更新组合框的三个选项:
适配器解决方案非常容易实现(ComboBoxModel
,这是ListModel
),不需要复制数据,因此不需要同步。通常是最好的选择,在我的选择中。