Как закрыть один JFrame и открыть новый JFrame? - Java

Узнай цену своей работы

Формулировка задачи:

привет подскажите как реализовать. есть отдельный класс с выпадающим меню(там три пункта). есть отдельный класс который рисует фрейм, панели, кнопки и тд. есть main который создает объект класса с фреймом. нужно чтобы при нажатии на элементы меню фрейм перерисовывался. пробовал реализовать так - три конструктора в классе с фреймом - один который по умолчанию запускается и при выборе первого пункта меню и два других которые только при выборе меню создаются. но проблема в том что при нажатии на пункт меню просто создаются новые фреймы с новыми компонентами а старый фрейм не закрывается. подскажите как при нажатии закрыть старый и открыть новый?

Решение задачи: «Как закрыть один JFrame и открыть новый JFrame?»

textual
Листинг программы
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
public class Menu extends JMenuBar {
 
    private static final String BEGINNER = "Новичoк";
    private static final String AMATEUR = "Любитель";
    private static final String PROFESSIONAL = "Профессионал";
    MainFrame mFr;
 
    public Menu() {
 
        JMenu gameMenu = new JMenu("Игра");
        add(gameMenu);
 
        JMenuItem newGame = new JMenuItem("Новая Игра");
        gameMenu.add(newGame);
        newGame.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                //рестарт
            }
        });
 
        gameMenu.addSeparator();
 
 
        JMenuItem beginner = new JMenuItem(BEGINNER);
        gameMenu.add(beginner);
 
        beginner.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
 
                //mFr.removeElements();
                mFr.setMainPanel(1);
                //new MainFrame(1);
            }
        });
 
        JMenuItem amateur = new JMenuItem(AMATEUR);
        gameMenu.add(amateur);
 
        amateur.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                //mFr.removeElements();
                mFr.setMainPanel(2);
                //new MainFrame(2);
            }
        });
 
        JMenuItem professional = new JMenuItem(PROFESSIONAL);
        gameMenu.add(professional);
 
        professional.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
 
                mFr.removeAllElements(3);
                //mFr.removeElements();
                //mFr.setMainPanel(3);
                //new MainFrame(3);
            }
        });
        gameMenu.addSeparator();
 
        JMenuItem exitGame = new JMenuItem("Выход");
        gameMenu.add(exitGame);
 
        exitGame.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
 
                System.exit(0);
            }
        });
 
 
        JMenu infoMenu = new JMenu("Справка");
        add(infoMenu);
 
        JMenuItem infoButton = new JMenuItem("Об Игре");
        infoMenu.add(infoButton);
        infoMenu.addSeparator();
        JMenuItem infoButton5 = new JMenuItem("Об Игре5");
        infoMenu.add(infoButton5);
 
 
        JMenu infoMenu2 = new JMenu("Справка2");
        add(infoMenu2);
 
        JMenuItem infoButton7 = new JMenuItem("Об Игре7");
        infoMenu2.add(infoButton7);
        infoMenu2.addSeparator();
        JMenuItem infoButton2 = new JMenuItem("Об Игре2");
        infoMenu2.add(infoButton2);
 
 
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.625 из 5
Похожие ответы