Наличие 2 отдельных кнопок закрытия для 2 JFrames? - PullRequest
1 голос
/ 29 апреля 2011

Я делаю небольшое приложение с JMenuBar, теперь у меня есть пункт меню - магазин, который открывает новый JFrame. Когда я нажимаю кнопку, появляется новый JFrame, все хорошо. Но когда я нажимаю кнопку закрытия моего Store JFrame, я не хочу, чтобы мой основной JFrame закрывался. Если я сейчас нажму кнопку закрытия магазина, она закроет как основной JFrame, так и Store JFrame, какую-либо помощь по созданию подобия, 2 отдельные кнопки закрытия для этих 2 JFrame? Код для основного JFrame:

    public static void main(String[] args){

    //Create new JFrame
    JFrame frame = new JFrame();
    frame.setTitle("MrStan");
    frame.setSize(200, 200);
    frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    frame.setJMenuBar(menubar);

    //Set location of JFrame
    Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
    int screenWidth = (int) dim.getWidth();
    int screenHeight = (int) dim.getHeight();
    frame.setLocation(screenWidth / 2 - 200, screenHeight / 2 - 200);

    //Set ContentPane to JPanel
    MrStan panel = new MrStan();
    frame.setContentPane(panel);

    //Make the user not be able to resize
    frame.setResizable(false);

    //Make the JFrame visible
    frame.setVisible(true);

}

Мой магазин JFrame:

    public MrStanStore(){   
    JFrame frame2 = new JFrame();
    frame2.setTitle("Store");
    frame2.setSize(300, 200);
    frame2.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

    //Set location of JFrame
    Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
    int screenWidth = (int) dim.getWidth();
    int screenHeight = (int) dim.getHeight();
    frame2.setLocation(screenWidth / 2 - 200, screenHeight / 2 - 200);

    //Make the user not be able to resize
    frame2.setResizable(false);

    //Make the JFrame visible
    frame2.setVisible(true);
}

Ответы [ 2 ]

2 голосов
/ 29 апреля 2011

Не используйте 2 JFrames. Обычно приложения должны иметь один JFrame, а затем вы используете JDialogs для поддержки окон. JDialogs не поддерживает выход из ВМ при закрытии, поэтому это не будет проблемой.

Если вы используете JFrame, вам следует использовать DISPOSE_ON_CLOSE. Затем, когда последний кадр будет закрыт, виртуальная машина автоматически выйдет.

1 голос
/ 29 апреля 2011

Вы ранее звонили JFrame.setDefaultCloseOperation на что-то вроде EXIT_ON_CLOSE?Попробуйте установить его на DO_NOTHING_ON_CLOSE, и вы сможете обрабатывать событие закрытия любым удобным вам способом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...