在Java Swing中,使JListJComboBox在数据方面同步(即在任何给定时间点具有相同项目列表)的最佳方法是什么?基本上,如果我将一项添加到某项(或从其中删除某项),则另一项应自动反射(reflect)更改。

我尝试执行以下操作,但似乎不起作用:

JList list = new JList();
JComboBox comboBox = new JComboBox();
DefaultListModel listModel = new DefaultListModel();
// add items to listModel...
list.setModel(listModel);
comboBox.setModel(new DefaultComboBoxModel(listModel.toArray()));

最佳答案

您的模型-用于列表的ListModel和用于组合框的ComboboxModel-需要同步。

在一般情况下,这意味着编写模型的特殊实现,但是对于您而言,您很幸运:DefaultComboBoxModel实际上实现了ListModel,因此,您可以为两个组件都使用相同的模型对象。

JList list = new JList();
JComboBox comboBox = new JComboBox();
DefaultComboBoxModel listModel = new DefaultComboBoxModel();
// add items to listModel...
list.setModel(listModel);
comboBox.setModel(listModel);

10-02 00:41
查看更多