我在 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/