如何在 ActionListener 的 actionPerformed [Java] 中传递 for 循环索引
How to pass for loop index inside ActionListener's actionPerformed [Java]
我想知道是否有一种方法可以使用循环分配点击事件。
我正在寻找的快速示例:
每个按钮将在 myMethod(int)
.
内执行操作的位置
所以 button[2]
应该做 myMethod(2)
等等。
// imports...
public class MyClass {
private JButton[] buttons = new JButton[10];
public MyClass() {
// constructor
for ( int i = 0; i < this.buttons.length; i++ ) {
this.buttons[i].addActionListener( new ActionListener() {
public void actionPerformed( ActionEvent e ) {
MyClass.this.myMethod(i);
}
});
}
}
public void myMethod( int id ) {
// perform actions
//...
}
}
上面的代码抛出变量必须是最终的或有效最终的错误。我知道为什么,但我怎样才能做类似的事情?
只需创建临时最终变量并为其分配 i
值。现在您可以使用最终变量将其传递给 myMethod
,如下所示:
// imports...
public class MyClass {
private JButton[] buttons = new JButton[10];
public MyClass() {
// constructor
for (int i = 0; i < this.buttons.length; i++) {
final int myFinalIndex = i;
this.buttons[i].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
MyClass.this.myMethod(myFinalIndex);
}
});
}
}
public void myMethod(int id) {
// perform actions
// ...
}
}
我想知道是否有一种方法可以使用循环分配点击事件。
我正在寻找的快速示例:
每个按钮将在 myMethod(int)
.
所以 button[2]
应该做 myMethod(2)
等等。
// imports...
public class MyClass {
private JButton[] buttons = new JButton[10];
public MyClass() {
// constructor
for ( int i = 0; i < this.buttons.length; i++ ) {
this.buttons[i].addActionListener( new ActionListener() {
public void actionPerformed( ActionEvent e ) {
MyClass.this.myMethod(i);
}
});
}
}
public void myMethod( int id ) {
// perform actions
//...
}
}
上面的代码抛出变量必须是最终的或有效最终的错误。我知道为什么,但我怎样才能做类似的事情?
只需创建临时最终变量并为其分配 i
值。现在您可以使用最终变量将其传递给 myMethod
,如下所示:
// imports...
public class MyClass {
private JButton[] buttons = new JButton[10];
public MyClass() {
// constructor
for (int i = 0; i < this.buttons.length; i++) {
final int myFinalIndex = i;
this.buttons[i].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
MyClass.this.myMethod(myFinalIndex);
}
});
}
}
public void myMethod(int id) {
// perform actions
// ...
}
}