在javadoc中,HIDE_ON_CLOSE默认选项表示
自动在调用任何已注册的WindowListener对象之后隐藏窗口。
现在问题来了,“隐藏”是什么意思?相关的对象被销毁还是只是隐藏并继续使用资源?
自动在调用任何已注册的WindowListener对象之后隐藏窗口。
现在问题来了,“隐藏”是什么意思?相关的对象被销毁还是只是隐藏并继续使用资源?
默认情况下没有任何理由,因为默认情况下没有创建另一个JFrame
的理由,不要这样做,使用CardLayout
(如果需要在屏幕上更改JFrames
大小,则使用JFrame.pack()
)
所有这些Object
都会保留并增加JVM内存,永远不会被回收
, 因此在JVM内存方面,JFrame.HIDE_ON_CLOSE
,JFrame.DISPOSE_ON_CLOSE
或JFrame.setVisible(false)
之间没有显着的区别
(如果您讨厌CardLayout
),可以从JFrames ContentPane
中删除所有JComponents
,然后添加新的JComponents
,设置LayoutManager
,并在所有更改已经可见的JFrame
完成后,最后一行代码将是JFrame.(re)validate();
,JFrame.repaint();
和JFrame.pack();
将其隐藏在后台而不破坏它,保持其在内存中。
HIDE_ON_CLOSE
的意思是窗口会消失,但程序仍在后台运行并占用资源,尽管不可见于屏幕上。
而使用 EXIT_ON_CLOSE
则会使窗口消失并关闭应用程序(如果您真的想关闭应用程序,请使用此选项)。