Java 我不能马上换两个进度条
我想马上换两个进度条。但我不能 我想说的是Java 我不能马上换两个进度条,java,multithreading,swingworker,invokelater,swingutilities,Java,Multithreading,Swingworker,Invokelater,Swingutilities,我想马上换两个进度条。但我不能 我想说的是 nextButton.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { WorkProgressBar.setVisible(true); FileProgressBar.setVisible(false); AND
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的闪烁
所以我搜索了很多信息
我使用了线程、swingworker、swingutilities(调用器)
但我无法解决
我怎样才能解决这个问题。请帮助我。您可能希望将在这2秒钟内完成的任务分配给工作线程。假设您想A.)减少一个进度条,B.)增加另一个进度条 您可以通过实现其run方法来分配一个线程来执行任务。然后另一个线程将在B)上执行工作。) 现在,您希望主线程(分配这两个线程开始工作)等待工作线程完成。因此,在执行
thread1.start()
和thread2.start()
之后,您可以通过执行联接来等待它们完成,如下所示:
try {
thread1.join();
thread2.join();
} catch (Exception e) { e.printStackTrace() }
'依此类推(约2秒)'将阻止处理发送到表示ProgressBar的窗口的消息。它们只在事件处理程序退出时获取进程,因此visible属性最终会被短暂切换,并且该条只会闪烁。