7

我有一个非常简单的JFrame窗口,其中包含一个按钮:No.

在主函数中,我设置setVisible(true);了我的JFrameNo按钮监听器,我想关闭窗口,所以我将可见性设置为 false:setVisible(false);然后我这样做System.exit(0);是为了防止在多次运行程序时可能出现内存泄漏。

我有两个问题:

  1. System.exit(0);在上述情况下我真的需要吗?
  2. 如果我把它JFrame作为一个popup窗口,我就不能真正使用System.exit(0);,因为这会终止整个程序。那么如何正确关闭弹出窗口并留在主JFrame窗口中呢?(现在我只关闭它setVisible(false);,当我通过程序执行多次时,程序变得非常慢)。
4

3 回答 3

9
  1. 采用CardLayout

  2. 是否有另一个弹出容器的真正原因

  3. 将两者放在一起,以上两点,用于与父母一起CardLayout弹出,注意从一张卡切换到另一张卡后可能/需要调用JDialogJFrameJDialog.pack()

于 2013-01-03T12:02:31.423 回答
4
  1. setVisible会导致减速
  2. dispose会导致减速
  3. System.exit将关闭整个 JVM

因此,您应该重用单个JFrameor JDialog

在按钮的ActionListener中,调用frame.setVisible(false);。然后,不要创建一个新框架,而是执行frame.setVisible(true);. 如果你想改变框架的内容,有功能frame.getContentPane().removeAll();

于 2013-01-03T12:03:32.837 回答
3

只需添加这个:JFrame.setDefaultCloseOperation(DISPOSE_ON_CLOSE)。注意: 的默认选项JFrameHIDE_ON_CLOSE

于 2013-01-03T12:03:01.763 回答