JComboBoxes 的 ArrayList 导致 JComboBoxes 相互锁定

ArrayList of JComboBoxes causing JComboBoxes to lock to each other

这是我遇到的问题:我有 5 个 JComboBoxArrayList。这些 JComboBox 每个都包含相同的五个选项:"1", "2", "3", "4", and "5"。然后我通过 for 循环将 JComboBoxArrayList 添加到 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)); 

现在每个组合框包含一个单独的模型,但每个模型包含相同的值。