java - 在 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 编号 5 上检测到 Clickevent”,我不知道为什么会这样。
解决方案
请更喜欢在循环中的 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]);
}
如果您进行这些更改,它将起作用。
推荐阅读
- json - 在 Scala 中解析 JSON 文件
- winforms - “当前项目未引用包含此符号的库,因此该符号未定义”
- php - 比较php中的日期并显示结果
- json - 如何将 JSON 数据加载到 Angular 中的类或类数组中?
- python - 如何使用 Python 读取文本文件并传输到字典?
- javascript - 冻结网站元素直到时间过去
- excel - 为什么在使用 Flynsarmy csv 播种器包时从 Excel 导出到 Csv 会导致 Laravel Seeder 静默失败?
- r - Shiny:使用 selectizeInput 选择组
- php - 如何在laravel中为票务系统创建模型之间的关系
- android - 如何在保持更新的同时通过whatsapp发送我的位置?