JFrame和setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE)

时间:2013-07-19 10:08:11

标签: java swing jframe

在javadoc上,HIDE_ON_CLOSE默认选项表示

  

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

现在意味着什么“隐藏”?实体对象被破坏或只是隐藏并继续使用资源?

3 个答案:

答案 0 :(得分:6)

  

在javadoc上,HIDE_ON_CLOSE默认选项表示

     

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

     

现在意味着什么“隐藏”?实体对象被破坏或只是隐藏并继续使用资源?

  • HIDE_ON_CLOSEJFrame.setVisible(false)

  • 相同
  • 然后JFrame只有hiden,不可见,不会以某种方式被破坏(JFrame.dispose()也是如此),JFrame.setVisible(true)再次可以看到它并且没有任何变化

修改

  

@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内存没有明显区别
  4. (在您讨厌CardLayout的情况下),您可以从JComponents删除所有JFrames ContentPane,然后添加新的JComponents,设置{{1并且最后一行代码行(对已经可见的LayoutManager的所有更改完成后)将是JFrameJFrame.(re)validate();JFrame.repaint();

答案 1 :(得分:0)

将其隐藏在后台而不会破坏它,将其保存在内存中

答案 2 :(得分:0)

HIDE_ON_CLOSE意味着它只会消失,但会在后台运行并消耗资源,但屏幕上不可见。

但是,使用EXIT_ON_CLOSE会使其消失并杀死应用程序(如果您想真正关闭应用程序,请使用此选项)