【问题标题】:Java Swing application lifecycle problemJava Swing 应用程序生命周期问题
【发布时间】:2011-10-31 13:28:43
【问题描述】:

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

我怎样才能使主应用程序在完整的 Swing 界面关闭时收到通知,或者 Swing 界面的启动在它关闭之前一直阻塞。 Closed 表示 JFrame WindowListener 的WindowAdapter.windowClosed(WindowEvent) 方法已经被调用。

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

编辑:也许这将是实现此生命周期接口的解决方案:

public interface Lifecycle {

    public void startup();

    public void shutdown();

}

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

这样做是否可行并且是一种好的做法?

【问题讨论】:

标签: java swing


【解决方案1】:

方法应该如下

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

【讨论】:

  • 有JFrame的类不知道关闭资源,因为关闭这个JFrame会触发关闭资源。 Stefan(不好意思把我的问题写得这么模棱两可)
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    • 2021-05-06
    • 1970-01-01
    • 2011-06-02
    相关资源
    最近更新 更多