我想构建一个“正在进行的工作......” - JFrame在调用可能需要一些时间的方法之前,但在执行该方法之前JFrame将不会完全呈现。 我知道我不是第一个遇到这个问题的人,我总是找到涉及线程的解决方案(在线程中执行长工作方法等等)。但我不想因为特殊原因(可能除非我希望系统能够蓬勃发展,否则我甚至无法做到这一点。)
那么,是否有可能告诉Swing首先渲染一个窗口,然后完成剩下的工作?像渲染窗口成为excecute-queue中的第一个?
答案 0 :(得分:3)
答案 1 :(得分:2)
您可以通过显示JFrame然后调用
来实现SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
myLongMethod();
}
});
但这真是一个坏主意。 GUI将在整个方法期间被冻结。
实际上,正确的方法是使用后台线程。但是Swing拥有让你无痛的所需。只需使用SwingWorker
即可。它的API文档编写得很好并且有例子。尝试这样做,如果你不能,请提出另一个问题并显示你尝试过的代码,以便有人帮助你。