簡體   English   中英

單擊按鈕關閉JFrame

[英]close JFrame on button click

我正在制作菜單系統。 我遇到了一個問題。每當我按下按鈕移至下一個菜單時,舊的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? 任何幫助將是巨大的!

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);
      }
    }

我發現了我的問題。 我需要做MainMenu.this.dispose(); 訪問JFrame

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM