当前位置: 首页 > 知识库问答 >
问题:

带有actionlistener的JButton不执行其代码

艾翼
2023-03-14

我在业余时间开发了一个小游戏,但我遇到了一个问题,我真的不明白它为什么会发生。

public class PauseMenu extends JFrame {
       ...
/**
 * Create the frame.
 */
public PauseMenu() {
           ...
    JButton btnContinue = new JButton("Continue");

    btnContinue.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {

            GamePanel.var.setPause(false);
            dispose();
        }
    });
    contentPane.add(btnContinue);

    ...
}

这是一段无法真正工作的代码。这是一个带有三个按钮的JFrame(我去掉了另外两个)。它应该是一个暂停菜单,当按下“p”键时是一个“弹出窗口”。它运行得很好,问题是

游戏面板。变量setPause(假);

这一行应该设置一个布尔值为false,然后继续我的游戏循环。但由于某些原因,它从未执行,布尔值保持为true。这个问题只有在我将游戏主窗口从JPanel更改为JFrame之后才出现,这样我才能显示其他JFrame。我将两者联系起来,因为它们很长:

这是JPanel的旧代码。该按钮与此代码一起工作。

https://github.com/westerwave/dogfight_remake/blob/master/main/Dogfight.java

以下是当前代码(JPanel)

https://github.com/westerwave/dogfight_remake/blob/master/main/GamePanel.java

(JFrame)

    public static GameFrame frame;
    public GamePanel game;

    public GameFrame() {
       setUndecorated(true);
       setResizable(false);
       setTitle("Dogfight-Frame");
       setSize(dim);
       setVisible(true);
       game = new GamePanel();
       getContentPane().add(game);
       frame = this;
    }

我希望我在这个问题上说得很清楚,你能帮助我。

编辑:我犯了一个错误,依靠我的paintComponent方法来提供布尔值的信息。我现在发现布尔值已经改变了,所以一切都按预期进行。但不知怎的,我的gameloop在我点击那个按钮后并没有恢复吗

共有1个答案

邵兴文
2023-03-14

这应该能正常工作,我怀疑这里有些混乱。

如果在actionPerformed()方法中放置一个断点(或者简单地在那里放置一个System.out.println()语句),会怎么样?达成/执行了吗?

项目好运,似乎很有趣!

 类似资料:
  • 问题内容: 您好,感谢您提前阅读,这是我的问题: 我已经尝试过所有这些操作,只是使该按钮消失了,我也禁用了它,但是我需要它只是消失,而不是淡出或其他东西。背景是variabel,所以我无法制作它,因此它和它具有相同的颜色,并假装它不存在。有谁有任何线索可以使它消失吗? 编辑 :我已经尝试了所有答案,非常感谢您,但是按钮仍然存在:( EDIT2 :我想因为我的计时器而不断添加按钮,我犯了一个很大的错

  • 我的JButton ActionListener有问题。我在另一个类中定义了一个doTheCleaning()方法,当调用该方法时,会对GUI进行一系列更改。 然后,在另一个类中,我实例化了包含doTheCleaning()方法的类,并用jbutton的actionperformed()方法编写了ActionListener,如下所示: 我知道如何执行其他操作,比如addActionListene

  • 在这里,我想在按下按钮时执行一个操作,这很容易,但主要问题是在扩展的JPanel中执行。可能有一个简单的解决方案,比如向特定的按钮添加动作监听器并调用actionperformed事件,但我的案例不是这样的,我有4个按钮(t1、t2、t3、t4)。所有这些按钮都将在单个actionperformed事件ae中运行(查看代码段)。稍后您可以看到调用另一个JButtons tr和rf调用actionl

  • 问题内容: 我的JButton ActionListener出现问题。我在另一个类中定义了doTheCleaning()方法,该类在调用时对我的GUI进行了一系列更改。 然后在另一个类中,我实例化了包含doTheCleaning()方法的类,并用我的actionperformed()方法为我的jbutton编写了ActionListener,如下所示: 我知道如何做剩下的事情,例如addActio

  • 问题内容: 我正在寻找一种将变量或字符串或任何东西传递给JButton的匿名actionlistener(或显式actionlistener)的方法。这是我所拥有的: 现在,我只是声明是一个全局变量,但是我讨厌这种工作方式。有更好的选择吗? 问题答案: 创建一个实现该接口的类。 提供具有参数的构造函数。 问题?