我有三个标有A,B和C的JButtons。10秒后程序退出,总点击次数打印到控制台。我是一个完整的新手,我无法获得点击打印。总是出现0.我需要每个按钮的点击数来计算总数。我似乎还没有完全掌握变量的本质,所以我希望有人把它推到我的脸上,所以我可以学习它。
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();
答案 0 :(得分:0)
您需要在exter类中创建click
的实例字段,所有_clicks
变量只在其创建它们的ActionListener
内具有上下文,这意味着它们的值不在ActionListener
实例的一侧共享,其中定义了
请查看Understanding Class Members了解更多详情
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);
}
};
new Timer(delay,taskPerformer).start();