JComboBoxes的ArrayList导致JComboBoxes相互锁定

时间:2015-09-06 23:49:19

标签: java swing arraylist jcombobox

这是我遇到的问题:我有sqlite3_get_table() 5 ArrayList个问题。这些JComboBox每个都包含相同的五个选项:JComboBox。然后,我通过"1", "2", "3", "4", and "5"循环将ArrayList JComboBox JFrame添加到for。但是,由于某些奇怪的原因,每当我在其中一个JComboBox中选择一个选项时,JComboBox的其余部分也会选择该原因。 第一次截图是 JFrame 在首次执行时的状态screenshot1

这是用户选择其他菜单项的屏幕截图: screenshot2

此第三个屏幕截图显示所有JComboBox已更改为所选输入。 screenshot3

这是我的代码:

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();
}

}

1 个答案:

答案 0 :(得分:4)

comboArray.add(new JComboBox<String>(model)); 

您要为每个组合框添加相同的ComboBoxModel

您需要为每个组合框创建单独的模型。

所以循环中的代码应该是:

DefaultComboBoxModel<String> model = new DefaultComboBoxModel<String>(floors);
comboArray.add(new JComboBox<String>(model)); 

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