不能使用mouselistener的JFrame方法

时间:2013-09-14 04:08:46

标签: java swing jframe mouselistener

我目前正在尝试开发简单的游戏,但在制作游戏菜单时遇到一些麻烦。我在游戏菜单中使用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和英语。

1 个答案:

答案 0 :(得分:4)

不要使用MouseListener。

我无法确切地说出你在做什么,但你应该使用带菜单的JMenuBar或JButton。无论如何,我建议你先阅读Swing tutorial来学习Swing的基础知识。有以下部分:

  1. 如何使用菜单
  2. 如何使用按钮
  3. 让你开始。

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