2014-11-04 52 views
0

我有一个项目,我想用另一个类的调用更改进度条的值。 我怎么能实现这个?在另一个类中更改jprogressbar

static class ButtonActionListener implements ActionListener { 
    @Override public void actionPerformed(ActionEvent e) { 
     new Thread(new Runnable() 
     { 
     @Override public void run() 
     { 
      for (int i = 1; i <= bar.getMaximum(); ++i) 
      { 
      final int j = i; 

      SwingUtilities.invokeLater(new Runnable() 
      { 
       @Override public void run() { 
       bar.setValue(j); 
       } 
      }); 
      } 
     } 
     }).start(); 
    } 
    } 
+1

请发布您的代码,我们可以帮助您找到错误 – 2014-11-04 11:22:31

+0

其实这是我的代码来改变价值。 现在我想从另一个类中调用这个方法。 – lofoxx 2014-11-04 11:31:27

回答

0

您致电bar.setValue(...)更改进度。

但是,要小心,您只能从在Swing事件侦听器线程上运行的代码安全地执行此操作。从另一个线程调用这个方法很容易导致模糊的失败,这种失败只会偶尔发生,很难测试,并且很难追踪。

使用SwingUtilities.invokeLater(...)进行更改是正确的方法。您可以通过任何可以访问bar参考的代码来完成此操作。例如,你可以通过一个getter来暴露它。