如您所愿,这是由评论编译的答案。(也许有时有人会搜索该答案;))这里的解决方案可能会通过子类化
来覆盖您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 SwingWorker
or sth。像这样ProgressBar
在 aJDialog
中显示类似的东西,向用户展示某些东西将花费比预期更长的时间。当然,这仅在您计划执行长时间运行的操作(如执行 IO 操作)时才会发生。