gpt4 book ai didi

java - 局部变量 "i"在内部类修复中被访问?

转载 作者:行者123 更新时间:2023-12-01 17:11:58 27 4
gpt4 key购买 nike

我之前看过一些关于此的帖子,但我一直无法找到有关 actionListeners 的帖子。我正在尝试使用 JButton 数组创建井字棋。如果可能的话,如何在使用 for 循环临时变量的同时向它们添加 Action 监听器?感谢您提前提供的帮助。

JButton jb [] = new JButton[9];
int checkB [] = new int[9];
public SomethingSimple(){
JPanel p1 = new JPanel();
p1.setLayout(new GridLayout(3, 3, 5, 5));
p1.setBackground(Color.red);
for (int i = 0; i < jb.length; i++){
checkB[i] = 0;
}
for (int i = 0; i < jb.length; i++){
jb[i] = new JButton("");
p1.add(jb[i]);
jb[i].addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
jb[i].setText("O");
}
});
}
add(p1);
}

感谢大家的帮助,给了我一些解决方案!

最佳答案

在for循环内创建一个final int;您无法从您的类访问匿名类的局部变量..

解决方案:

     for (int i = 0; i < jb.length; i++){
jb[i] = new JButton("");
final int index = i;
jb[i].addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
jb[index].setText("O");
}
});
p1.add(jb[i]);

}

关于java - 局部变量 "i"在内部类修复中被访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23330562/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com