1

是否有一个 Java WindowListener 在显示窗口之前被调用?

我已经尝试过windowOpened(下面的示例)和componentShown. 这两个都在窗口显示后被调用。在显示窗口之前是否有任何侦听器被调用?

window.addWindowListener(new WindowAdapter() {
    @Override
    public void windowOpened(WindowEvent evt) {
        < ... code ... >    
    }
});
4

1 回答 1

1

如您所愿,这是由评论编译的答案。(也许有时有人会搜索该答案;))这里的解决方案可能会通过子类化
来覆盖您JFrame的 's方法。 setVisible(boolean)JFrame

该方法可能如下所示:

@Override
public void setVisible(boolean visible)
{
   if(visible) //Window is going to be shown
   {
       //your code you want to be executed before window is shown
   }

   //finally show or hide window
   super.setVisible(visible);
}

在这种情况下,您需要重构代码以使用新的子类,只需找到每个“新 JFrame”并将其替换为“新 YourFrameSub”(每个编辑器或 IDE 都应该能够做到这一点)。
这样,您可以确保在显示任何内容之前执行您的代码。
记得用a SwingWorkeror sth。像这样ProgressBar在 aJDialog中显示类似的东西,向用户展示某些东西将花费比预期更长的时间。当然,这仅在您计划执行长时间运行的操作(如执行 IO 操作)时才会发生。

于 2013-01-18T15:45:19.417 回答