java如何异步触发JProgressBar?
我在JPanel
中有一个JButton
(swing
),如果它被按下,我在其EDT thread
列表上的for循环上执行任务。在这样做的同时,我需要更新JProgressBar
问题是,当我按下JButton时,任务是在事件调度线程(EDT)中执行的。因此,我无法更新在主线程或UI线程中触发的JProgressBar
现在,源代码对我来说是不可用的,因为我完全更改了它,并尝试将Eclipse SWT用于JProgressBar
。当Swing JButton
被触发时,它会变得混乱
现在我得到了invalid thread access
错误,因为Display对象在单独的UI线程中运行。一次只能显示SwingJPanel
或Eclipse SWTShell
我正在使用JOptionPane
触发JPanel
# 1 楼答案
您需要在独立于
EDT
的线程中执行长时间运行的工作并更新进度条值。大多数时候SwingWorker
是一个很好的方法。因此,在该按钮的ActionListener
中,应该将长时间运行的线程与EDT分开。你可以用裸Thread
来做,但是工人和特别的SwingWorker
是为这种情况设计的:希望这会有帮助
# 2 楼答案
Asynchronously
使用SwingWorker
处理JProgressBar
进度,详细使用两个Swing JButton btnStart and btnStop
我们来看看源代码-
希望这对你有帮助