我想在面板中更改 JSlider 的值,而我正在运行一个线程,它给了我这个值(因为取得了一些进展)
所以我计算线程中的进度值,并使用 GET 方法获取面板中的值并将其设置为进度条。
调试后,有一个值,但EDIT:[ JProgressBar ]不会更改他的 UI。
一些代码:
while(_thread.isAlive()) {
pb_calc.setValue(_thread.getVal());
pb_calc.updateUI();
}
我想在面板中更改 JSlider 的值,而我正在运行一个线程,它给了我这个值(因为取得了一些进展)
所以我计算线程中的进度值,并使用 GET 方法获取面板中的值并将其设置为进度条。
调试后,有一个值,但EDIT:[ JProgressBar ]不会更改他的 UI。
一些代码:
while(_thread.isAlive()) {
pb_calc.setValue(_thread.getVal());
pb_calc.updateUI();
}
不要使用updateUI
,此方法保留用于Look and Feel
和UIManager
的输出Background Tasks
应该被包装成invokeLater
,更多教程Concurency in Swing
更好的是从内部或内部调用Background
taksSwingWorker
Runnable#Thread