2013-07-19 20 views
3

Javadoc的,在HIDE_ON_CLOSE默认选项说的JFrame和setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE)

自动隐藏框架调用任何注册的WindowListener对象后。

现在这意味着什么“隐藏”?真实的对象被破坏或者隐藏并继续使用资源?

+0

隐藏基本上意味着它不会破坏原生reource /对,这是附加到,通常使其重新显示更快,因为它不需要创建本地对等体。另一方面处置会(摧毁本地同行)。因此,如果您不需要经常重新显示相框,请使用DISPOSE_ON_CLOSE,否则,请使用隐藏 – MadProgrammer

回答

6

Javadoc的,在HIDE_ON_CLOSE默认选项说

自动隐藏框架调用任何注册的WindowListener对象后。

现在这意味着什么“隐藏”?真实的对象被破坏或者隐藏并继续使用资源?

  • HIDE_ON_CLOSE相同JFrame.setVisible(false)

  • 然后JFrame只隐伏的,无形的,不被破坏某种方式(同为JFrame.dispose()),由JFrame.setVisible(true)是在sceen再次可见和没有任何变化

编辑

@giozh写道,如果我想摧毁jframe(没有关闭 整个应用程序)?

  1. 默认情况下,没有任何理由,因为默认情况下没有任何理由创建另一个JFrame,不这样做,使用CardLayout(与JFrame.pack()如果时,只需要在屏幕上改变JFrames大小)

  2. and all those Object stays and increasing JVM memory, never will be CG'ed,那么不存在用于JFrame.HIDE_ON_CLOSEJFrame.DISPOSE_ON_CLOSEJFrame.setVisible(false)

  3. 之间JVM存储器siginficant差

    (在CASSE,你恨CardLayout),你可以从JFrames ContentPane删除所有JComponents,然后添加新的JComponents,设置LayoutManager和最后的代码行(所有更改已经显现JFrame完成后)将是JFrame.(re)validate();JFrame.repaint();JFrame.pack();

+0

如果我想销毁jframe(不关闭整个应用程序)? – giozh

+0

你能告诉我这个优点吗?我的意思是,如果我关闭了窗户,它隐藏了我的框架,我将如何让它再次可见? – Makky

+0

@giozh使用DISPOSE_ON_CLOSE – Makky

0

它藏在不破坏它的背景下,保持它在内存中

+0

不是答案,而是评论。将其作为评论发布。 – Makky

+0

@Makky:他将如何发表评论,他没有+50分!所以请删除你的downvote。 – Azad

+0

然后他应该发布一个正确的答案。这不是一个答案,dev的downvote,除非这个家伙编辑它与更多的信息。 – Makky

0

HIDE_ON_CLOSE意味着它只会disppear,但会在后台和消耗资源来运行,虽然在屏幕上不可见。

但使用EXIT_ON_CLOSE,反而使它消失以及杀死应用程序(使用这个,如果你想真正关闭应用程序)