我有一个非常简单的JFrame
窗口,其中包含一个按钮:No
。
在主要功能中,我设置了setVisible(true);
我的JFrame
,在No
按钮监听器中我要关闭窗口,因此我将可见性设置为false:setVisible(false);
和之后我执行System.exit(0);
以防止多次运行程序时可能发生的内存泄漏。
我有两个问题:
System.exit(0);
吗?JFrame
作为popup
窗口,我实际上无法使用System.exit(0);
,因为这将终止整个程序。那么如何正确关闭弹出窗口并保持在主JFrame
窗口? (现在我只用setVisible(false);
关闭它,当我通过程序执行多次这样做时,程序变得很慢。)答案 0 :(得分:9)
如果有其他弹出容器的真正原因
将两者放在一起,将两个点放在一起,使用CardLayout
弹出JDialog
,父级为JFrame
,在从一张卡切换到另一张卡后,可能需要/致电JDialog.pack()
答案 1 :(得分:4)
setVisible
会导致速度放缓dispose
会导致速度放缓System.exit
将关闭整个JVM 因此,您应该重复使用单个JFrame
或JDialog
。
在按钮的ActionListener
中,调用frame.setVisible(false);
。然后执行frame.setVisible(true);
而不是创建新框架。如果要更改框架的内容,可以使用函数frame.getContentPane().removeAll();
。
答案 2 :(得分:3)
只需添加:JFrame.setDefaultCloseOperation(DISPOSE_ON_CLOSE)
。
注意:JFrame
的默认选项为HIDE_ON_CLOSE
。