Java 局部变量;我";是否在内部类修复程序中访问?
我以前看过一些关于这个的帖子,但是我还没有找到一个关于actionListeners的帖子。我正在尝试使用一组jbutton创建tic-tac-toe。如果可能的话,如何在使用for循环临时变量的同时向它们添加操作侦听器?提前谢谢你的帮助Java 局部变量;我";是否在内部类修复程序中访问?,java,actionlistener,Java,Actionlistener,我以前看过一些关于这个的帖子,但是我还没有找到一个关于actionListeners的帖子。我正在尝试使用一组jbutton创建tic-tac-toe。如果可能的话,如何在使用for循环临时变量的同时向它们添加操作侦听器?提前谢谢你的帮助 JButton jb [] = new JButton[9]; int checkB [] = new int[9]; public SomethingSimple(){ JPanel p1 = new JPanel(); p1.setLayou
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);
}
JButton jb[]=新JButton[9];
int checkB[]=新int[9];
公共SomethingSimple(){
JPanel p1=新的JPanel();
p1.设置布局(新网格布局(3,3,5,5));
p1.立根背景(颜色:红色);
对于(int i=0;i
谢谢大家的帮助,你给了我一些解决方案 我认为最好的解决方案是将
ActionListener
移动到一个单独的类:
public class MyActionListener implements ActionListener {
private final JButton button;
public MyActionListener(JButton button) {
this.button = button;
}
@Override
public void actionPerformed(ActionEvent e){
button.setText("O");
}
}
并按如下方式更改代码:
for (int i = 0; i < jb.length; i++) {
jb[i] = new JButton("");
p1.add(jb[i]);
jb[i].addActionListener(new MyActionLisener(jb[i]));
}
for(int i = 0; i < jb.length(); i++)
{
jb[i].addActionListener(class that implements the listener);
}
for(int i=0;i
我认为最好的解决方案是将ActionListener
移动到一个单独的类:
public class MyActionListener implements ActionListener {
private final JButton button;
public MyActionListener(JButton button) {
this.button = button;
}
@Override
public void actionPerformed(ActionEvent e){
button.setText("O");
}
}
并按如下方式更改代码:
for (int i = 0; i < jb.length; i++) {
jb[i] = new JButton("");
p1.add(jb[i]);
jb[i].addActionListener(new MyActionLisener(jb[i]));
}
for(int i = 0; i < jb.length(); i++)
{
jb[i].addActionListener(class that implements the listener);
}
for(int i=0;i
在forloop中创建一个最终的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]);
}
for(int i=0;i
在forloop中创建一个最终的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]);
}
for(int i=0;i
本地和匿名类只能访问final
本地变量,因此请执行以下操作
final JButton btn = jb[i];
在创建
新JButton
后,立即在for
循环中执行操作,然后您可以在操作执行中引用btn
,本地和匿名类只能访问最终的
本地变量,因此执行类似操作
final JButton btn = jb[i];
在for
循环中,在创建新的JButton
之后,您可以立即参考btn
内执行的操作
这是来自一位15岁的C程序员,所以请谨慎对待。首先,我理解了您的问题,您希望使用for循环将actionListener
添加到数组jb
中的所有jbutton中。
基本上根据我的java经验,您必须将actionListener
实现到您的类中(或者实现到任何充当实际侦听器的类中)。那么您的代码应该如下所示:
for (int i = 0; i < jb.length; i++) {
jb[i] = new JButton("");
p1.add(jb[i]);
jb[i].addActionListener(new MyActionLisener(jb[i]));
}
for(int i = 0; i < jb.length(); i++)
{
jb[i].addActionListener(class that implements the listener);
}
for(int i=0;i
如果我误解了你的问题,请告诉我。这是一位15岁的C#程序员发来的,请恕我直言。首先,我理解了您的问题,您希望使用for循环将actionListener
添加到数组jb
中的所有jbutton中。
基本上根据我的java经验,您必须将actionListener
实现到您的类中(或者实现到任何充当实际侦听器的类中)。那么您的代码应该如下所示:
for (int i = 0; i < jb.length; i++) {
jb[i] = new JButton("");
p1.add(jb[i]);
jb[i].addActionListener(new MyActionLisener(jb[i]));
}
for(int i = 0; i < jb.length(); i++)
{
jb[i].addActionListener(class that implements the listener);
}
for(int i=0;i
如果我误解了你的问题,请告诉我。不过他仍然想使用迭代器。@Human我是说在for循环中,我想我最初写的方式不是特别清楚。哦,好吧,这是有道理的。btn
还会引用与jb[i]
相同的对象吗?尽管如此,他还是想使用迭代器。@Human我是说在for循环中,我想我最初编写它的方式不是特别清楚。哦,好吧,这很有意义。btn
还会引用与jb[i]
相同的对象吗?我尝试了类似的方法,但它告诉我无法更改最终变量。我记不清我到底做了什么。我现在知道我能做到。谢谢我尝试了类似的方法,但它告诉我无法更改最终变量。我记不清我到底做了什么。我现在知道我能做到。谢谢最后决定。事实上,它是一个ActionListener
对答案没有任何影响。可能的重复项使其成为最终结果。事实上,它是一个ActionListener
对答案没有任何影响。可能的重复