2012-04-19 67 views
1

我想改变面板的JSlider的价值,同时我跑这给就是我这个值(因为一些进展)线程变化的JProgressBar值,而线程运行

所以我计算Thread中的progress-value,以及GET方法,我在面板中获取值并想将其设置为进度条。

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

某些代码:

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

使用'JProgressBar'而不是'JSlider'的。 – 2012-04-19 15:28:18

+0

对不起,我有一个进度条 - 外观编辑 – 2012-04-19 15:31:04

回答

4
  • 不使用updateUI,这种方法保留为Look and FeelUIManager

  • Background Tasks输出应该被包裹成invokeLater,更教程Concurency in Swing

  • 更好的方式是从SwingWorker调用Background TAKS或内部Runnable#Thread

+0

你能给我一个例子吗? – 2012-04-19 15:28:09

+1

@Christian'fuzi'Orgler在这里检查我的个人资料,有我的最后一点 – mKorbel 2012-04-19 16:27:25

+2

@ Christian'fuzi'Orgler http://stackoverflow.com/questions/8916721/java-swing-update-label/8917565#8917565是一个例子。 Swing教程还包含一个(请参阅JProgressBar类javadoc中的链接......这非常方便) – Robin 2012-04-19 17:21:38