Java Swing应用程序生命周期问题

时间:2011-08-21 11:09:04

标签: java swing

我有一个Java应用程序,用于启动Swing用户界面。该接口是一个具有封装的JFrame实例的类。问题是应用程序分配了一些资源,Sw​​ing接口使用这些资源,但应用程序关闭资源而不是用户界面。

如何实现主应用程序在完整的Swing接口关闭时获取通知,或者Swing接口的开始阻塞直到它关闭。 Closed表示已调用JFrame WindowListener的WindowAdapter.windowClosed(WindowEvent)方法。

此线程(link)的解决方案似乎在JFrame不可见时返回,这是否包含WINDOW_CLOSED事件处理?

编辑:也许它将成为实施此生命周期界面的解决方案:

public interface Lifecycle {

    public void startup();

    public void shutdown();

}

现在,Swing接口类必须在WindowEvent.WINDOW_CLOSED事件的处理程序中调用主应用程序的shutdown()方法。

这样做是否可能并且有很好的实践?

2 个答案:

答案 0 :(得分:2)

尝试使用Toolkit.getDefaultToolkit().addAWTEventListener()。如果您提供适当的事件掩码,您可以获得所需的事件。这没有订阅JFrame的特定实例。

答案 1 :(得分:0)

方法应如下

  • 资源关闭应引发事件
  • 该类封装了JFrame,应该监听资源关闭事件
  • 并且侦听器应该调用JFrame.setEnabled(false)方法使其禁用