Java 程序结束时按钮点击的打印

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、B和C的JButton。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();

您需要在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”。谷歌搜索并没有起到多大作用。你似乎把它变成了一个局部变量,而不是像建议的那样变成了一个实例字段。你看过链接教程了吗?