【问题标题】:ArrayList of JComboBoxes causing JComboBoxes to lock to each otherJComboBoxes 的 ArrayList 导致 JComboBoxes 相互锁定
【发布时间】:2015-12-02 11:06:18
【问题描述】:

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

}

【问题讨论】:

    标签: java swing arraylist jcombobox


    【解决方案1】:
    comboArray.add(new JComboBox<String>(model)); 
    

    您将相同的ComboBoxModel 添加到每个组合框。

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-01-22
      • 1970-01-01
      • 2011-03-12
      • 2019-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多