java - 选择 JComboBox 数组中的一个会触发所有 JComboBox 的操作

标签 java arrays swing actionlistener jcombobox

我在 for 循环中创建了一个组合框数组,如下所示:

for(int i = 0; i < 5; i++) {
  ...
  comboStudy[i] = new JComboBox(studyModel);
  comboStudy[i].addActionListener(new studyListener());
  comboStudy[i].setActionCommand("" + i);
  ...
}

监听器是一个实例内部类:

public class studyListener implements ActionListener {
  public void actionPerformed(ActionEvent evt) {  
    int i = Integer.parseInt(evt.getActionCommand());

    // do some stuff that requires i and also access 
    // to the instance members of the containing class
  }
}

我现在面临的问题是,每当我在comboStudy[0]中运行时做出选择时, Action 事件就会被触发5次。第一次 i 是 4,每次都减少,直到达到 0。

我也尝试过使用 ItemListener,但也有同样的问题。

请帮忙!

最佳答案

这是因为您在所有 JComboBox 中使用相同 ComboBoxModel

每个JComboBox 都是ComboxBoxModel 的监听器,只要数据模型发生更改,ComboBoxModel 就会通知每个监听器。当您选择 JComboBox 中的某个项目时,ComboBoxModel 会发生变化,进而向每个 JComboBox 触发事件。这就是为什么您会看到每个 JComboBox 上发生事件的原因。

关于java - 选择 JComboBox 数组中的一个会触发所有 JComboBox 的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12726294/

相关文章:

java - Hibernate Search - MySQL 错误太多与连接继承模型连接

java - 获取 Wicket 口中输入的值

java - 我应该如何找到重复的单词序列

java - 如何将类名传递给抽象父类(super class)构造函数?

java - 打印数组的反转时出现 ArrayIndexOutOfBoundsException

java - KeyListener 根本不起作用,但我的代码在我 friend 的计算机上运行良好

java - 通用树的自定义 Jackson 序列化程序

c# - 声明一个父类(super class)数组

java - 如何将文本字段添加到 java swing 中按钮的 Action 监听器?我也有关于字符串的疑问

java - 为什么这个 JPanel 实例的大小不正确?