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

标签 java swing awt event-listener

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

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

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

最佳答案

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

该方法可能如下所示:

@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);
}

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

关于java - 是否有一个 Java WindowListener 在显示窗口之前被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14367527/

相关文章:

java - Ant 不构建第二个 jar

java - 如何使用 github java API (org.eclipse.egit.github.*) 通过邮件搜索用户

java - 在 JFrame 中调整 JPanel 的大小

java - JOptionPane - 添加 keylistener 到 showOptionDialog

java - 通过 JFileChooser 获取选中文件的类型

java - 根据新屏幕尺寸重新计算 X 和 Y 坐标

java - 尝试用 JPanel 绘制一个简单的矩形,但没有显示任何内容

java - Proguard简单示例错误

Java 可以只将输入/输出放在主方法中吗?

java - 将 AWT Canvas 转换为 Swing