Java Swing JFrame在继续前呈现

时间:2011-07-09 16:35:33

标签: java swing queue jframe

我想构建一个“正在进行的工作......” - JFrame在调用可能需要一些时间的方法之前,但在执行该方法之前JFrame将不会完全呈现。 我知道我不是第一个遇到这个问题的人,我总是找到涉及线程的解决方案(在线程中执行长工作方法等等)。但我不想因为特殊原因(可能除非我希望系统能够蓬勃发展,否则我甚至无法做到这一点。)

那么,是否有可能告诉Swing首先渲染一个窗口,然后完成剩下的工作?像渲染窗口成为excecute-queue中的第一个?

2 个答案:

答案 0 :(得分:3)

答案 1 :(得分:2)

您可以通过显示JFrame然后调用

来实现
SwingUtilities.invokeLater(new Runnable() {
    @Override
    public void run() {
        myLongMethod();
    }
});

但这真是一个坏主意。 GUI将在整个方法期间被冻结。

实际上,正确的方法是使用后台线程。但是Swing拥有让你无痛的所需。只需使用SwingWorker即可。它的API文档编写得很好并且有例子。尝试这样做,如果你不能,请提出另一个问题并显示你尝试过的代码,以便有人帮助你。

相关问题