在ActionEvent JButton主体中不可访问int变量值



我的代码片段如下:

static int i=0;
JButton ar[]=new JButton[5];
for( i=0;i<5;i++)
{
ar[i]=new JButton(" Button number : "+i);
ar[i].addActionListener((ActionEvent clicked) -> {
System.out.println(" Clickevent detected on JButton number "+i);
});
panel.add(ar[i]);

在程序的输出中,它正在打印";在JButton number 5"上检测到点击事件

请在循环中的actionevent代码之前使用循环变量的副本,并打印该副本,并尝试在循环中声明循环变量。像这样:

JButton ar[]=new JButton[5];
for(int i=0;i<5;i++)
{
ar[i]=new JButton(" Button number : "+i);
int ci=i;
ar[i].addActionListener((ActionEvent clicked) -> {
System.out.println(" Clickevent detected on JButton number "+ci);
});
panel.add(ar[i]);
}

如果你做出这些改变,它会起作用。

最新更新