我早些时候以更大的形式发布了这个问题,并希望以一种允许社区更好地帮助我的方式再次发布它,减少关于你们所有人的信息。
从根本上说,我有这段代码,解释如下:
for(JMenuItem x : chem3_x_y){
x.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent k) {
new SwingImplementation(1, tt+1);
}
});
gEleven[6].add(x);
tt++;
}
tt=0;
首先,我循环遍历数组 chem3_x_y 中的所有 JMenuItem-s
然后,我将 ActionListener 添加到“x”或数组的每个项目,它创建一个新的 SwingImplementation,其参数为 1,变量“tt”
在此之后,JMenu gEleven收到有问题的 JMenuItem,然后我将 tt 增加 1。
上述代码的目的是自动化将 JMenuItems 添加到 gEleven 并将 ActionListeners 添加到每个 Menu Item 的过程。
问题是,为变量 'tt' 传递的参数始终相同,为 1,就好像将 'tt' 参数为 1 的动作侦听器应用于每个 JMenuItem - 为什么会这样,以及如何使用不断增加的tt为每个JMenuItem创建一个 ActionListener ,参数为 (1, tt) 而 tt 始终为 1