我有一个列表(ArrayList),其中包含我想要在两个JComboBox中显示的元素,因此它们都显示相同的元素,但是当您在一个JComboBox中选择一些元素时,另一个元素不能更改。
我现在要做的是创建两个DefaultComboBoxModel并在循环中添加两个元素。
DefaultComboBoxModel modeloA = new DefaultComboBoxModel();
DefaultComboBoxModel modeloB = new DefaultComboBoxModel();
// Agregamos el resto de plantillas.
for (OcupacionType plantilla : plantillas) {
modeloA.addElement(plantilla);
modeloB.addElement(plantilla);
}
comboboxA.setModel(modeloA);
comboboxB.setModel(modeloB);
这是更有效的方法吗?这是克隆模型的方法吗?
答案 0 :(得分:3)
wrong suggestion start
How to have two JComboBox with the same elements?
- >不会让我发现,不要这样做,只为当前JVM中的所有JComboBox创建一个DefaultComboBoxModel,并为两个JComboBox共享此模型
如果两个模型包含相同的数据,它们应该是低效的
对于基于AbstractListMode的可编辑JComboBox非常重要
wrong suggestion ended
来自ListDataListener的EDIT交互事件,共享两个实例的选定项目(JComboBox),这里是SSCCE / MCVE形式的简短说明(参见对c omboBox1 & comboBox2
的选择之间的差异(使用{{1的简单覆盖) }})与ListDataListener
)
comboBox3 & comboBox4
答案 1 :(得分:1)
正如@StanislavL在评论中所建议的那样,您可以使用Vector初始化新模型。
Vector vec = new Vector(plantillas);
comboboxA.setModel(new DefaultComboBoxModel(vec));
comboboxB.setModel(new DefaultComboBoxModel(vec));
这非常简单有效,因为只制作了一个元素副本(制作矢量)。