2011-09-13 12 views
2

JProgressBarを使いたいと思います.1秒で読み込む必要があります。私はどんな仕事も完了するのを待っていません。進捗バーを1秒で埋めるだけです。だから私は次のコードを書く。しかし、それは動作しません。プログレスバーは満たされていませんでした。私はJavaが初めてです。誰でも私を助けることができますか? JProgressBarの使い方

 
    public void viewBar() {
progressbar.setStringPainted(true); progressbar.setValue(0); for(int i = 0; i <= 100; i++) { progressbar.setValue(i); try { Thread.sleep(10); } catch (InterruptedException ex) { JOptionPane.showMessageDialog(null, ex.getMessage()); } } progressbar.setValue(progressbar.getMinimum()); }

答えて

5

これはアプリケーション全体、プログレスバーとすべてを置くが、何もしないだろうとあなたは、メインスイングスレッド、EDTまたは「イベントディスパッチスレッド」でのThread.sleep(...)を呼び出すことはできません、寝るため。 1秒間何も起こっていないように見えたら、ビンゴ、進行状況バーがいっぱいです。

Thread.sleepの代わりに、この部分にSwing Timerを使用することをお勧めします。また、長期的なプロセスを最終的に監視する場合は、SwingWorkerなどのバックグラウンドスレッドを使用してください。 SwingWorkersについては、JProgressBarチュートリアルで説明しています。タイマー付き

例えば、:

public void viewBar() { 

    progressbar.setStringPainted(true); 
    progressbar.setValue(0); 

    int timerDelay = 10; 
    new javax.swing.Timer(timerDelay , new ActionListener() { 
    private int index = 0; 
    private int maxIndex = 100; 
    public void actionPerformed(ActionEvent e) { 
     if (index < maxIndex) { 
      progressbar.setValue(index); 
      index++; 
     } else { 
      progressbar.setValue(maxIndex); 
      ((javax.swing.Timer)e.getSource()).stop(); // stop the timer 
     } 
    } 
    }).start(); 

    progressbar.setValue(progressbar.getMinimum()); 
} 
+1

は、あなたの答えをありがとうございました。何人かの人は天才のようにふりをするが、何も知らないからだ。彼らは評判だけを減らす方法を知っています。再度、感謝します。 –

関連する問題