在显示窗口之前是否有Java WindowListener被调用?
问题描述:
在显示窗口之前是否有Java WindowListener被调用?在显示窗口之前是否有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);
}
由于在这种情况下,你需要重构代码以使用新的子类,只要找到并更换每一个“新的JFrame”到“新YourFrameSub”(每编辑器或IDE应该能够做到这一点)。
这样你可以确保你的代码被执行,之前显示任何东西。
请记住使用SwingWorker
或某物。像这样在JDialog
中显示类似ProgressBar
的东西以向用户示出将花费比预期更长的时间。当然,这只有在您计划执行长时间运行的操作(如执行IO操作)时才会发生。
鉴于[WindowListener方法](http://docs.oracle.com/javase/7/docs/api/java/awt/event/WindowListener.html),没有。 –
你是一个踢show()的人,所以你可以自己开火吗? – flup
不会覆盖'setVisisble()'/'show()' - 方法,它会在打开窗口之前调用您的代码,符合您的需求? – Zhedar