Swing JProgressBar没有像我期望的那样重新绘制

时间:2010-10-12 17:32:35

标签: java swing jprogressbar

嘿所有,我有一个非常简单的问题,有人应该能够帮助我。我想要的只是一个带有进度条的小框架,它会更新,现在它不会更新:

final JProgressBar bar = new JProgressBar(0,250000);
bar.setValue(1000);
bar.setIndeterminate(false);
JOptionPane j = new JOptionPane(bar);
final JDialog d = j.createDialog(j,"Expierment X");
d.pack();
d.setVisible(true);
bar.setValue(40000);

40,000的值没有显示,只显示为1000.我宁愿不必编写任何类来处理重绘调用或者执行此操作所涉及的任何内容(没有永久使用Swing)。< / p>

谢谢!

2 个答案:

答案 0 :(得分:3)

这是因为createDialog阻止了bar.setValue,所以在对话框上点击OK之前不会调用 final JProgressBar bar = new JProgressBar(0,250000); bar.setValue(1000); bar.setIndeterminate(false); JOptionPane j = new JOptionPane(bar); Thread t = new Thread(){ public void run(){ for(int i = 1000 ; i < 250000 ; i+=10000){ bar.setValue(i); try { Thread.sleep(100); } catch (InterruptedException e) { } } } }; t.start(); final JDialog d = j.createDialog(j,"Expierment X"); d.pack(); d.setVisible(true);

您应该在其他主题中更新进度条。

例如:

{{1}}

答案 1 :(得分:1)

您需要确保从Event Dispatch Thread调用setValue方法。您可以使用SwingUtilities.invokeLater