【问题标题】:Java - Only dispose JFrame on close?Java - 仅在关闭时处理 JFrame?
【发布时间】:2011-01-12 23:13:29
【问题描述】:

在我的 Java 程序中,我希望无论是否打开任何其他窗口,只要用户单击角落的红色 X,就这样 摆动框架关闭。我尝试了 JFrame.DISPOSE_ON_CLOSE 和其他窗口侦听器,但是当我退出一个 JFrame 时,系统仍然退出。

为了澄清,假设我有两个可见的 JFrame,退出一个会自动退出另一个,然后系统退出。关于如何只关闭一个 JFrame 的任何想法?谢谢。

【问题讨论】:

  • 如果唯一运行的框架被处理掉,系统会在一段时间不活动后退出。
  • 罗伯特-即使其他框架打开,系统仍然退出,也关闭它们,这是我手头的问题。
  • 也许你还有一个WindowListener调用System.exit()
  • 你确定没有设置EXIT_ON_CLOSE,比如:frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

标签: java swing dispose


【解决方案1】:

这对我有用:

public class Test {

    public static class TestFrame implements Runnable{
        public void run() {
            JFrame frame = new JFrame();
            frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            frame.setSize(200, 300);
            frame.setVisible(true);
        }
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new TestFrame());
        EventQueue.invokeLater(new TestFrame());
    }
}

【讨论】:

  • 感谢您花时间编写测试 - 当我单击 X 时,我有一个 WindowHandler 冗余退出系统,覆盖了 defaultCloseOperation。我还需要做些什么来结束这个问题吗?
  • 如果您接受一个答案(包括您自己的),人们可能会停止回答它......但没有什么可以关闭它 - 以便其他人也可以从答案中学习,实际上是任何未来的答案。
【解决方案2】:

Finnw 是正确的——我设置了一个新的 WindowListener(尽管它从不调用 System.exit() 除非它默认调用)但我现在可以处理它。谢谢大家

【讨论】:

  • 您需要点击正确答案旁边的勾号才能接受该回复作为答案
猜你喜欢
  • 2011-12-09
  • 2013-05-08
  • 2017-03-25
  • 1970-01-01
  • 2011-01-02
  • 2012-11-05
  • 1970-01-01
  • 2013-01-13
  • 1970-01-01
相关资源
最近更新 更多