更改其他类中的jprogressbar

时间:2014-11-04 11:20:32

标签: java 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 个答案:

答案 0 :(得分:0)

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

但是,要注意,您只能从在Swing事件侦听器线程上运行的代码安全地执行此操作。从另一个线程调用此方法可能会导致模糊的故障,这些故障只会偶尔发生,很难测试,很难追踪。

使用SwingUtilities.invokeLater(...)进行更改是正确的方法。您可以从任何有权访问bar引用的代码执行此操作。例如,您可以通过getter公开它。