java - 在 actionPerformed() 方法之外使用变量

标签 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() 的内容,但我不确定这是否是我在这里寻找的内容。

最佳答案

它打印 0 的原因是监听器外部的代码立即执行。监听器代码仅在您按下按钮时执行,因此直到打印语句之后才会发生。

我认为您需要做的就是从操作监听器内部设置 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);

    }
});

关于java - 在 actionPerformed() 方法之外使用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8199155/

相关文章:

java - 多维数组是否从零开始?

java - 如何防止多窗口?

java - 通过交替切换 Action 在游戏中实现暂停

java - 使用 Maven 的 IntelliJ IDEA 中的 GUI 应用程序 : Throws NullPointerException after built into a jar

android - 是否可以在 Android 上构建类似 WebOS 的 UI 应用程序

java - 如何使用 docx4j 在 docx 文档中创建样式表?

java - 如果我使用海镜外观,如何更改 JButton 高度?

java - 已建立连接但没有互联网的 UnknownHostException 超时

java - 如何使用 JFileChooser 保存 txt 文件?

swift - 在 tvOS 中更改 View 时如何保持选择的片段?