0

私は Java の初心者です。プログレス バーとアプリケーション コードを同時に実行する方法を教えてください。つまり、アプリケーション コードが何らかの処理を行っている限り、プログレス バーをインクリメントさせたいと考えています。詳しく説明してください。それをコードで。2 つのスレッドを同時に追加する必要があると思います。1 つのスレッドがプログレスバー スレッドを更新しますが、それが正しい方法かどうかはわかりません。私はプログレスバーをインクリメントするためにこのコードを書きました(ハードコードされています)

       class ProgressMonitor implements Runnable {

    public void run() {
        jProgressBar1.setStringPainted(true);
        //run untill 100% complete
        while (progress < 100) {
            //update the progressbar
            jProgressBar1.setValue(++progress);
            jProgressBar1.repaint();
            try {

                //Sleep for .25 second
                Thread.sleep(250);
            } catch (InterruptedException ex) {
            }
        }

    }   
4

3 に答える 3

3

問題は基本的に、実行時間の長いタスクが、GUI を更新するイベント ディスパッチ スレッドをブロックすることです。1 つの解決策は、SwingWorker.

バックグラウンド スレッドで長い GUI 対話タスクを実行するための抽象クラス。..

詳細については、チュートリアルのSwing での同時実行のレッスンも参照してください。

于 2012-02-11T14:39:00.963 に答える
1

解決策は確かにを使用することSwingWorkerです。と組み合わせて使用​​する場合は、 と組み合わせて使用​​する例があるチュートリアルJProgressBarを参照することをお勧めします。または、このサイトで簡単に検索して、このような例を見つけますJProgressBarSwingWorkerJProgressBar

于 2012-02-12T10:40:02.817 に答える
0

これと SwingWorker の詳細については、次のトピックを参照してください。

マルチタスク アプリケーションで GUI と EDT を管理する

于 2012-02-11T14:53:38.620 に答える