Swing Worker done()在process()方法之前执行

时间:2016-02-08 09:52:20

标签: java swing user-interface swingworker

我正在尝试使用Swing Worker process()方法更新我的Swing GUI。换句话说,计算在doInBackground()方法中继续,发布其结果,然后process()方法影响GUI上的更改。

我的挑战 GUI将一直停留,直到doInBackground操作完成。没有GUI的中间更新。

此外,甚至在我看到process()方法的内容

之前,就会触发done()方法

我的问题 请问,为什么会发生这种情况,我该如何解决这个问题?

class SwingWorkerThread extends SwingWorker<String, String> {

@Override
protected String doInBackground() throws Exception {
    String Pub = "Default";

    for (int i = 0; i < 2000; i++) {
        Pub = String.valueOf(i);
        publish(Pub);
        Thread.sleep(200);
    }

    return Pub;
}

@Override
protected void process(List<String> chunks) {
    for (String number : chunks) {
        MainFrame.TextArea.append(number + "\n");
        System.out.println(number);
    }

}

@Override
protected void done() {
    System.out.println("Done Here");
}

}

0 个答案:

没有答案