我创建了一个扩展 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 中逐项添加?(如果只是选择更改,也会发生这种情况......)。