这就是我遇到的问题:我有一个包含 5 个 JComboBox
的 ArrayList
。这些 JComboBox
每个都包含相同的五个选项:“1”、“2”、“3”、“4”和“5”
。然后,我通过 for
循环将 JComboBox
的 ArrayList
添加到 JFrame
中。但是,由于某些奇怪的原因,每当我在其中一个 JComboBox 中选择一个选项时,其余的 JComboBox 也会选择该原因。 第一个屏幕截图是 JFrame
首次执行时的状态:
第三个屏幕截图显示所有 JComboBox
均更改为所选输入。
这是我的代码:
class Foo {
JFrame frame = new JFrame("Add person(s)");
ArrayList<JComboBox> comboArray = new ArrayList<JComboBox>();
String[] floors = {"1", "2", "3", "4", "5"};
DefaultComboBoxModel<String> model = new DefaultComboBoxModel<String>(floors);
public void go() {
for (int x = 0; x < 5; x++) {
comboArray.add(new JComboBox<String>(model)); //Adds numbers 1-5 to a new JComboBox, and the JComboBox is then added to comboArray
frame.add(comboArray.get(x)); //Adds each JComboBox to the frame
}
frame.setResizable(false);
...
frame.setVisible(true);
}
public static void main (String [] args) {
go();
}
}
最佳答案
comboArray.add(new JComboBox<String>(model));
您正在向每个组合框添加相同的ComboBoxModel
。
您需要为每个组合框创建一个单独的模型。
所以循环内的代码应该是:
DefaultComboBoxModel<String> model = new DefaultComboBoxModel<String>(floors);
comboArray.add(new JComboBox<String>(model));
现在每个组合框都包含一个单独的模型,但每个模型都包含相同的值。
关于java - JComboBox 的 ArrayList 导致 JComboBox 相互锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32429406/