【问题标题】:Cannot use JFrame method from mouselistener无法从 mouselistener 使用 JFrame 方法
【发布时间】:2013-09-14 04:08:46
【问题描述】:

我目前正在尝试开发简单的游戏,但是在制作游戏菜单时遇到了一些麻烦。我为游戏菜单中的每个状态(例如指令或选项)使用 JPanel,并在父 JFrame 中有方法根据用户在菜单上单击的项目来随机播放它们。

我的代码是这样的(没有像 setSize() 或 setVisible() 这样的简单方法)。

public class Game extends JFrame{

    private JPanel mainPanel = new MainPanel();
    private JPanel helpPanel; = new HelpPanel();
    private JPanel optionPanel = new OptionPanel();
    private JPanel currentPanel = new JPanel();

    public Game(){
          add(currentPanel);
    }

    public void changePanel(int destination){

          remove(currentPanel);

          if(destination==MAIN_PANEL)
                currentPanel = mainPanel;
          else if(destination==HELP_PANEL)
                currentPanel = helpPanel;
          else if(destination==OPTION_PANEL)
                currentPanel = optionPanel;

          add(currentPanel);
}

除了我尝试在 mouselistener 中使用 changePanel 方法外,一切都正常工作,它没有任何响应。然后我尝试了一些像这样的简单方法。

....
public void mouseClicked(MouseEvent e) {
          removeAll();
          JOptionPane.showConfirmDialog(null, "Pop when click anywhere.");
}
....

我希望我的 JFrame 会被清除并弹出对话框。该对话框确实会弹出,但对于 JFrame。我的问题是如何使用 mouselistener 中的那些简单方法。

对不起我糟糕的英语。我现在正在学习 Java 和英语。

【问题讨论】:

    标签: java swing jframe mouselistener


    【解决方案1】:

    不要使用 MouseListener。

    我不能确切地知道您在做什么,但您可能应该使用带有菜单的 JMenuBar 或 JButton。无论如何,我建议您从阅读Swing tutorial 开始学习 Swing 的基础知识。有以下部分:

    1. 如何使用菜单
    2. 如何使用按钮

    开始吧。

    您还应该查看Using a Card Layout 上的部分。当您想从框架中移除/添加面板时,这通常是更好的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-29
      • 1970-01-01
      • 1970-01-01
      • 2021-10-30
      • 1970-01-01
      • 2013-04-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多