Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使两个JComboBox具有相同的元素?_Java_Swing_Clone_Jcombobox_Comboboxmodel - Fatal编程技术网

Java 如何使两个JComboBox具有相同的元素?

Java 如何使两个JComboBox具有相同的元素?,java,swing,clone,jcombobox,comboboxmodel,Java,Swing,Clone,Jcombobox,Comboboxmodel,我有一个列表ArrayList,其中包含我希望在两个JComboBox中显示的元素,因此它们都显示相同的元素,但当您在一个JComboBox中选择某些元素时,另一个元素不得更改 我现在要做的是创建两个DefaultComboxModel,并在循环中添加这两个元素 DefaultComboBoxModel modeloA = new DefaultComboBoxModel(); DefaultComboBoxModel modeloB = new DefaultComboBoxModel();

我有一个列表ArrayList,其中包含我希望在两个JComboBox中显示的元素,因此它们都显示相同的元素,但当您在一个JComboBox中选择某些元素时,另一个元素不得更改

我现在要做的是创建两个DefaultComboxModel,并在循环中添加这两个元素

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);
这是更有效的方法吗?这是克隆模型的一种方法吗

wrong suggestion start

如何使两个JComboBox具有相同的元素?->我不认为,不要这样做,只为当前JVM中的所有JComboxes创建一个DefaultComboxModel,并为两个JComboxes共享此模型

如果两个模型包含相同的数据,那么保存它们应该是低效的

对于基于AbstractListMode的可编辑JComboBox可能很重要

编辑ListDataListener中的intererting事件,该事件共享两个实例的选定项JComboBox,以下是SSCCE/MCVE表单中的简短解释请参见对comboBox1和Combox2的选择之间的差异使用ListDataListener与Combox3和Combox4的简单覆盖

如何使两个JComboBox具有相同的元素?->我不认为,不要这样做,只为当前JVM中的所有JComboxes创建一个DefaultComboxModel,并为两个JComboxes共享此模型

如果两个模型包含相同的数据,那么保存它们应该是低效的

对于基于AbstractListMode的可编辑JComboBox可能很重要

编辑ListDataListener中的intererting事件,该事件共享两个实例的选定项JComboBox,以下是SSCCE/MCVE表单中的简短解释请参见对comboBox1和Combox2的选择之间的差异使用ListDataListener与Combox3和Combox4的简单覆盖


正如@StanislavL在评论中所建议的,您可以使用向量来初始化新模型

Vector vec = new Vector(plantillas);

comboboxA.setModel(new DefaultComboBoxModel(vec));
comboboxB.setModel(new DefaultComboBoxModel(vec));

这是非常简单和有效的,因为只制作了元素的一个副本来制作向量。

正如@StanislavL在评论中所建议的,您可以使用向量来初始化新模型

Vector vec = new Vector(plantillas);

comboboxA.setModel(new DefaultComboBoxModel(vec));
comboboxB.setModel(new DefaultComboBoxModel(vec));

这是非常简单和有效的,因为只制作了一个元素副本来制作向量。

我认为如果这样做,两个组合框将显示相同的选定项我认为如果这样做,两个组合框将显示相同的选定项你不能创建两个模型,但从一个向量实例创建吗?谢谢@StanislavL,我已经回答了你的评论,因为这似乎是一个很好的回答。很高兴这种方法有帮助+答案是1。你不能创建两个模型,但从一个向量实例创建吗?谢谢@StanislavL,我已经回答了你的评论,因为这似乎是一个非常好的答案。很高兴这种方法有帮助+答案是1。
Vector vec = new Vector(plantillas);

comboboxA.setModel(new DefaultComboBoxModel(vec));
comboboxB.setModel(new DefaultComboBoxModel(vec));