【问题标题】:How to change the value of a boolean when a JButton is pressed按下 JButton 时如何更改布尔值
【发布时间】: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


【解决方案1】:

当设置isFullscreen = false; 时,你并没有改变全屏窗口的状态!

您可以使用GraphicsDevice#setFullScreenWindow(null); 将其设置回窗口模式。

【讨论】:

    猜你喜欢
    • 2016-05-08
    • 2018-04-11
    • 1970-01-01
    • 1970-01-01
    • 2014-01-06
    • 2016-03-26
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    相关资源
    最近更新 更多