【问题标题】:int variable value not accessible in ActionEvent JButton body在 ActionEvent JButton 主体中无法访问 int 变量值
【发布时间】:2021-04-16 09:45:27
【问题描述】:

我的代码 sn-p 如下:

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 上检测到 Clickevent”,我不知道为什么会这样。

【问题讨论】:

    标签: java swing static integer


    【解决方案1】:

    请在循环中的 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]);
    }
    

    如果您进行这些更改,它将起作用。

    【讨论】:

    • @ProgrammingGeek11 如果解决方案有效,则接受答案
    猜你喜欢
    • 2023-03-10
    • 2015-12-07
    • 2019-12-20
    • 1970-01-01
    • 2020-11-30
    • 1970-01-01
    • 2020-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多