【发布时间】:2014-04-23 03:40:48
【问题描述】:
我的问题说明了一切。
这是我的代码:
fullscreen.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
MainMenu.isFullscreen = true;
}
});
其中 fullscreen 是 JButton。
然后在我的 Screen 类中:
if(mm.isFullscreen) {
GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow(this);
repaint();
}
mm 是 MainMenu 的减速度。当 mm.isFullscreen 为 false 时,屏幕为其正常大小。
我想我在某处读到 ActionListeners 不能改变 ActionListener 之外的东西的值...?
编辑:
感谢您的帮助,我已经解决了这个问题,但这是新代码:
在屏幕类中:
public void setFullscreen() {
GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow(this);
repaint();
}
在 mainMenu 类中:
fullscreen.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(isFullscreen) {
isFullscreen = false;
}
if(!isFullscreen) {
isFullscreen = true;
screen.setFullScreen();
}
});
【问题讨论】:
-
我没有看到这个问题。 ActionListener 可以像其他所有类一样访问变量。
-
你是否测试过你的布尔值是否真的在改变?如果您的代码不是线程安全的,则可能无法在另一个线程上看到对变量的更改。
-
嗯,它看起来很真实,它会改变。
-
我对另一个名为 quit 的 jbutton 有相同的确切代码,除了 quit 执行 System.exit()。如果退出按钮可以成功执行其代码,为什么不能全屏按钮?
-
我的假设是它设置为 true,但 screen 类中的代码在运行时开始时执行,因为即使 isFullscreen 现在为 true,代码也无用。
标签: java swing boolean jbutton actionlistener