我正在使用JMenuBar创建一个小应用程序,现在,我有一个menuitem,它是一个商店,它打开一个新的JFrame。当我点击按钮时,会出现一个新的JFrame,一切都很好。但是,当我单击Store JFrame的关闭按钮时,我不希望我的主JFrame关闭。如果我现在按下商店关闭按钮,它将关闭主JFrame和商店JFrame,为这两个JFrame制作2个单独的关闭按钮的任何帮助?主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);
}
答案 0 :(得分:2)
不要使用2个JFrame。通常,应用程序应该有一个JFrame,然后使用JDialogs作为支持窗口。 JDialogs在关闭时不支持退出VM,因此这不会成为问题。
如果您使用JFrame,则应使用DISPOSE_ON_CLOSE。然后当最后一帧关闭时,VM将自动退出。
答案 1 :(得分:1)
您之前是否曾将JFrame.setDefaultCloseOperation
称为EXIT_ON_CLOSE
之类的内容?尝试将其设置为DO_NOTHING_ON_CLOSE
,您可以按照自己的方式处理关闭事件。