打印程序终止时按钮点击次数

时间:2015-10-27 22:16:16

标签: java swing actionlistener instance-variables

我有三个标有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();

1 个答案:

答案 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();