JComboBoxes 的 ArrayList 导致 JComboBoxes 相互锁定
ArrayList of JComboBoxes causing JComboBoxes to lock to each other
这是我遇到的问题:我有 5 个 JComboBox
的 ArrayList
。这些 JComboBox
每个都包含相同的五个选项:"1", "2", "3", "4", and "5"
。然后我通过 for
循环将 JComboBox
的 ArrayList
添加到 JFrame
。但是,由于某些奇怪的原因,每当我 select 中的一个 JComboBox
中的一个选项时,JComboBox
的其余部分也会 select 这个原因。 第一个屏幕截图是 JFrame
首次执行时的状态:
这是用户 select 另一个菜单项的屏幕截图:
第三个屏幕截图显示所有 JComboBox
已更改为 selected 输入。
这是我的代码:
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));
现在每个组合框包含一个单独的模型,但每个模型包含相同的值。
这是我遇到的问题:我有 5 个 JComboBox
的 ArrayList
。这些 JComboBox
每个都包含相同的五个选项:"1", "2", "3", "4", and "5"
。然后我通过 for
循环将 JComboBox
的 ArrayList
添加到 JFrame
。但是,由于某些奇怪的原因,每当我 select 中的一个 JComboBox
中的一个选项时,JComboBox
的其余部分也会 select 这个原因。 第一个屏幕截图是 JFrame
首次执行时的状态:
这是用户 select 另一个菜单项的屏幕截图:
第三个屏幕截图显示所有 JComboBox
已更改为 selected 输入。
这是我的代码:
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));
现在每个组合框包含一个单独的模型,但每个模型包含相同的值。