两个JFrame
s,
JFrame Main; // Main JFrame
JFrame Sub; //Second JFrame that is initialized from within Main via a JMenuItems ActionListener.
mainMenuItem.setActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
try{
Sub subFrame = new Sub();
subFrame.setVisible(true);
}catch(Exception e){}
}
});
}
问题是每当我关闭第二个JFrame(Sub)时它关闭第一个也是。
两个JFrame
都有:
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
这是问题的一部分吗?
答案 0 :(得分:5)
EXIT_ON_CLOSE
表示在关闭框架时立即退出程序(System.exit()
)。
您可能希望将其设置为DISPOSE_ON_CLOSE
,然后添加WindowListener
并仅在两个框架都已关闭时关闭程序。
(或者,您可能只希望主框架具有EXIT_ON_CLOSE
)
答案 1 :(得分:3)
是。根据定义,JFrame.EXIT_ON_CLOSE
退出应用程序。对于您的第二个Frame
使用DISPOSE_ON_CLOSE
或HIDE_ON_CLOSE
。
希望这有帮助!
答案 2 :(得分:2)
你说:
JFrame Sub; //通过JMenuItems ActionListener从Main内初始化的第二个JFrame。
这表明你遇到了设计问题:
请阅读此链接:The Use of Multiple JFrames, Good/Bad Practice?,特别请看看Andrew Thompson的社区wiki答案。