2014-11-04 33 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來暴露它。