在Thread运行时更改JProgressBar值

时间:2012-04-19 15:09:49

标签: java multithreading swing user-interface jslider

我想在面板中更改JSlider的值,而我正在运行一个Thread,它给我这个值(因为一些进展)

所以我在Thread中计算进度值,并且使用GET方法我在面板中获取值并想要将其设置为进度条。

调试后,有一个值,但编辑:[JProgressBar] 不会更改他的用户界面。

部分代码:

while(_thread.isAlive()) {
 pb_calc.setValue(_thread.getVal());
 pb_calc.updateUI();
}

1 个答案:

答案 0 :(得分:4)

  • 请勿使用updateUI,此方法仅供Look and FeelUIManager

  • 使用
  • Background Tasks的输出应该包含在invokeLater中,更多内容见教程Concurency in Swing

  • 最好从BackgroundSwingWorker

  • 内部调用Runnable#Thread抓取