是否有一个 Java WindowListener 在显示窗口之前被调用?
我已经尝试了 windowOpened
(下面的示例)和 componentShown
。这两个函数都会在窗口显示后被调用。是否有任何监听器在窗口显示之前被调用?
window.addWindowListener(new WindowAdapter() {
@Override
public void windowOpened(WindowEvent evt) {
< ... code ... >
}
});
最佳答案
如您所愿,这是由评论编译的答案。(也许有时有人会搜索它;))
这里的解决方案可以通过子类化 JFrame
来覆盖 JFrame
的 setVisible(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/