在 ActionEvent JButton 主体中无法访问 int 变量值
int variable value not accessible in ActionEvent JButton body
我的代码片段如下:
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 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]);
}
如果您进行这些更改,它将起作用。
我的代码片段如下:
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 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]);
}
如果您进行这些更改,它将起作用。