是否存在在Window显示之前调用的Java WindowListener?
我已经尝试了windowOpened
(下面的示例)和componentShown
。在显示窗口之后,这两个都被称为。在显示窗口之前是否有任何被称为的监听器?
window.addWindowListener(new WindowAdapter() {
@Override
public void windowOpened(WindowEvent evt) {
< ... code ... >
}
});
答案 0 :(得分:1)
如你所愿,这是一个由评论编写的答案。(也许有时会有人会搜索;))
此处的解决方案可能会通过继承JFrame
来覆盖您的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);
}
在这种情况下,您需要重构代码以使用新的子类,只需找到并将每个“new JFrame”替换为“new YourFrameSub”(每个编辑器或IDE都应该能够这样做)。
通过这种方式,您可以确保执行代码, 之前显示任何内容
请记住使用SwingWorker
或某事。像这样在ProgressBar
中显示类似JDialog
的内容,向用户显示某些内容需要的时间比预期的要长。当然,只有在您计划执行长时间运行的操作(例如执行IO操作)时才会发生这种情况。