Java 如何在操作侦听器中使用for循环变量
我正试图使用for循环为jButtons生成和添加actionlistener,以及一些奇特的数组编辑和随机数组抓取 这使用了一些自定义函数(所有这些函数都起作用) 在尝试编译时,我遇到了错误Java 如何在操作侦听器中使用for循环变量,java,for-loop,Java,For Loop,我正试图使用for循环为jButtons生成和添加actionlistener,以及一些奇特的数组编辑和随机数组抓取 这使用了一些自定义函数(所有这些函数都起作用) 在尝试编译时,我遇到了错误 Main.java:127: error: local variables referenced from an inner class must be final or effectively final gen+= data[i][i2][0]+": "+ran(data[i][i2])+"\n\n"
Main.java:127: error: local variables referenced from an inner class must be final or effectively final
gen+= data[i][i2][0]+": "+ran(data[i][i2])+"\n\n";
^
本质上,我需要的是一种让action listener知道int I值的方法,或者只知道[I][[]是什么数据(每个按钮都不同)您可以将
ActionListener
作为一个类从外部提取如下内容:
private static class MyActionListener implements ActionListener {
private int i;
MyActionListener(int i) {
this.i = i;
}
@Override
public void actionPerformed(ActionEvent actionEvent) {
}
}
现在,当您将actionListener添加到按钮时,实例化这个类,并在构造函数中传递i的值。执行的
操作的逻辑保持不变。添加actionListener
时,只需执行以下操作:newGenButton.addActionListener(newmyactionlistener(i))代码>解决了这个问题,抛出了一个错误,int我不能是私有的,所以我将其更改为公共的,效果非常好,谢谢you@Aspwilenson欢迎
Main.java:127: error: local variables referenced from an inner class must be final or effectively final
gen+= data[i][i2][0]+": "+ran(data[i][i2])+"\n\n";
^
private static class MyActionListener implements ActionListener {
private int i;
MyActionListener(int i) {
this.i = i;
}
@Override
public void actionPerformed(ActionEvent actionEvent) {
}
}