java - JComboBox 的 ArrayList 导致 JComboBox 相互锁定

标签 java swing arraylist jcombobox

这就是我遇到的问题:我有一个包含 5 个 JComboBoxArrayList。这些 JComboBox 每个都包含相同的五个选项:“1”、“2”、“3”、“4”和“5”。然后,我通过 for 循环将 JComboBoxArrayList 添加到 JFrame 中。但是,由于某些奇怪的原因,每当我在其中一个 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();
}

}

最佳答案

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/

相关文章:

java - 验证是否可以与 Controller 中增强的参数一起使用?

java - 如何在 JavaPoet 中创建具有给定名称的类型?

java - 组件更改大小后文本消失

java - GridBagLayout,在 JButtons 之间添加空间

java - 如何使用空行跳出 while 循环?

java - 如何使 JAXB 注释并提供 equals/hashcode 实现

Java命令行程序类路径问题

java - Swing Worker 在混合线程中的使用

java - 如何摆脱为android中的每个类实现Parcelable以便将其用于放置额外的数组列表

java - 什么时候在 Java 中声明任何数据结构为静态?