Java 程序结束时按钮点击的打印
我有三个标签为A、B和C的JButton。10秒后程序退出,点击总数被打印到控制台。我是一个完全的新手,在打印点击时遇到了麻烦。结果总是0。我需要每个按钮的点击次数计入总数。我似乎还没有完全理解变量的本质,所以我希望有人把它推到我面前,这样我就可以学习了Java 程序结束时按钮点击的打印,java,swing,actionlistener,instance-variables,Java,Swing,Actionlistener,Instance Variables,我有三个标签为A、B和C的JButton。10秒后程序退出,点击总数被打印到控制台。我是一个完全的新手,在打印点击时遇到了麻烦。结果总是0。我需要每个按钮的点击次数计入总数。我似乎还没有完全理解变量的本质,所以我希望有人把它推到我面前,这样我就可以学习了 a.addActionListener(new ActionListener() { int _clicks; public void actionPerformed(ActionEvent eco){ _
a.addActionListener(new ActionListener() {
int _clicks;
public void actionPerformed(ActionEvent eco){
_clicks++;
}
});
b.addActionListener(new ActionListener() {
int _clicks;
public void actionPerformed(ActionEvent eco){
_clicks++;
}
});
c.addActionListener(new ActionListener() {
int _clicks;
public void actionPerformed(ActionEvent eco){
_clicks++;
}
});
int delay = 10000;
ActionListener taskPerformer = new ActionListener() {
int _clicks;
public void actionPerformed(ActionEvent evt) {
System.out.println("You clicked "+_clicks+" times! Woop");
System.exit(0);
}
};
new Timer(delay, taskPerformer).start();
您需要在outter类中创建
单击
的实例字段,所有\u单击
变量只在创建它们的ActionListener
内有上下文,这意味着它们的值不会在定义变量的ActionListener
实例的外面共享
请查看更多详细信息
public class MyAwesomeClass extends ... {
private int clickCount;
//...
a.addActionListener(new ActionListener() {
//int _clicks;
public void actionPerformed(ActionEvent eco){
clickCount++;
}
});
//...
int delay = 10000;
ActionListener taskPerformer = new ActionListener() {
//int _clicks;
public void actionPerformed(ActionEvent evt) {
System.out.println("You clicked "+clickCount+" times! Woop");
// It might be nicer to close the active window
System.exit(0);
}
};
新计时器(延迟,taskPerformer).start() 谢谢你的回复。尽管如此,我仍然在第一行“private int clickCount”中得到一个错误。我得到错误“参数clickCount的修改器非法;只允许使用final”。谷歌搜索并没有起到多大作用。你似乎把它变成了一个局部变量,而不是像建议的那样变成了一个实例字段。你看过链接教程了吗?