我不能马上改变两个progressBar

时间:2013-11-05 09:43:13

标签: java multithreading swingworker invokelater swingutilities

我想立即更改两个progressBar。但我不能。

我所说的是......

nextButton.addMouseListener(new java.awt.event.MouseAdapter() {     
    public void mouseClicked(java.awt.event.MouseEvent evt) {
        WorkProgressBar.setVisible(true);
        FileProgressBar.setVisible(false);

        AND SO ON(about 2 secs.)

        WorkProgressBar.setVisible(false);
        FileProgressBar.setVisible(true);
    }
}

该代码大约需要2秒或更长时间。

但我能看到的只是ProgressBar的闪烁。

所以我搜索了很多信息。

我使用过thread,swingworker,swingutilities(invokelater)

但我无法解决。

我该如何解决这个问题。请帮帮我。

1 个答案:

答案 0 :(得分:0)

您可能希望将在这2秒内完成的任务分配给工作线程。让我们说你想要A.)减少一个进度条和B.)增加另一个进度条。

您可以通过实现其run方法来分配一个线程来执行此操作。然后另一个线程将在B上完成工作。)

现在,在此期间,您希望主线程(这是指定这两个线程开始执行其工作的内容)等待您的工作线程完成。所以在完成thread1.start()thread2.start()之后,你会等待他们通过加入完成,如下所示:

try {
    thread1.join();
    thread2.join();
} catch (Exception e) { e.printStackTrace() }