我对 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/