单击按钮关闭JFrame

时间:2014-04-20 21:35:50

标签: java swing button

我正在制作一个菜单系统。我遇到了一个问题。每当我按下按钮移动到下一个菜单时,旧的JFrame会在新的JFrame后面保持打开状态。代码是:

public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                MainMenu frame = new MainMenu();
                frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the frame.
 */
public MainMenu() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 450, 300);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(contentPane);
    contentPane.setLayout(null);

    JButton btnStart = new JButton("Start Game");
    btnStart.setBounds(154, 82, 126, 23);
    contentPane.add(btnStart);

    JLabel lblBattleKoalas = new JLabel("Battle Koalas");
    lblBattleKoalas.setFont(new Font("Times New Roman", Font.BOLD, 35));
    lblBattleKoalas.setBounds(121, 11, 219, 48);
    contentPane.add(lblBattleKoalas);

    JButton btnNewButton = new JButton("Player Menu");
    btnNewButton.setBounds(154, 116, 126, 23);
    contentPane.add(btnNewButton);
    btnStart.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            Game.main(null);

        }
    });
    btnNewButton.addActionListener(new DispPlayer());
}

static class DispPlayer implements ActionListener {

    @Override
    public void actionPerformed(ActionEvent e) {
        PlayerMenu.main(null);
        //Close Current Frame Here
    }

}

} 我如何关闭MainMenu并打开PlayerMenu?任何帮助都会很棒!

2 个答案:

答案 0 :(得分:0)

方法setVisile(boolean b)不仅用于制作框架,您也可以使用它来消除它们。例如,如果frame是您的MainMenu对象,则当有人按下您想要的按钮时,您可能想要调用frame.setVisible(false);

所以..让我们看一下你的按钮是btn,你的第一个菜单是oldMenu,你要显示的菜单是newMenu。 我相信你可以写:

    btn.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        oldMenu.setVisible(false);
        //don't forget to create the new menu
        newMenu.setVisible(true);
      }
    }

答案 1 :(得分:0)

我发现了我的问题。我需要MainMenu.this.dispose();来访问JFrame