为2个jframe提供2个独立的关闭按钮



我正在制作一个小应用程序,使用JMenuBar,现在,我得到了一个菜单项,这是一个商店,它打开了一个新的JFrame。当我单击该按钮时,将出现一个新的JFrame,一切正常。但是,当我单击Store JFrame的关闭按钮时,我不希望主JFrame关闭。如果我现在按下Store -close按钮,它将同时关闭主JFrame和Store JFrame,为这两个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);
}

My store:

    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个jframe。一般来说,应用程序应该有一个JFrame,然后使用jdialog来支持窗口。jdialog在关闭时不支持退出虚拟机,所以这不会是一个问题。

如果你使用JFrame,那么你应该使用DISPOSE_ON_CLOSE。当最后一帧关闭时,虚拟机将自动退出。

您以前是否将JFrame.setDefaultCloseOperation称为EXIT_ON_CLOSE之类的东西?尝试将其设置为DO_NOTHING_ON_CLOSE,您可以以任何方式处理关闭事件。

相关内容

最新更新