使用actionPerformed()方法之外的变量

时间:2011-11-20 03:04:11

标签: java swing user-interface

我对Java比较陌生,决定用Swing搞砸一下。我想构建一个应用程序,根据按钮点击向上或向下更新计数器。

一切都很顺利,直到我必须在其中一个按钮上添加一个监听器。我添加了一个按钮并修改了我在网上找到的一段代码:

    addHome.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e)
        {
            //Execute when button is pressed
            addHomeCount++;
        }
    });

我希望在单击按钮时增加addHomeCount。如果我添加

System.out.println(addHomeCount);

在方法中,它将代码完美地输出到控制台窗口。但是,当我在方法之外添加相同的代码时,它只返回0.

有没有办法可以在actionPerformed方法之外增加addHomeCount整数并将其放在JLabel中?我已经阅读了关于getActionCommand()的内容,但我不确定这是否是我在这里寻找的内容。

1 个答案:

答案 0 :(得分:3)

打印0的原因是因为监听器外部的代码立即执行。只有在按下按钮时才会执行侦听器代码,因此直到print语句之后才会执行该操作。

我认为你需要做的就是从动作监听器中设置JLabel文本。

JLabel addHomeLabel = new JLabel();
//add label to gui...
addHome.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e)
    {
        //Execute when button is pressed
        addHomeCount++;
        addHomeLabel.setText("Button pressed " + addHomeCount);

    }
});