1

デフォルトの Java ランタイムのプログレスバー クラスを使用するプログラムを作成しました。一度しか機能しないという事実を除いて、完全に機能します。GUI へのさまざまな画像の読み込みを表示するために使用し、起動時に正常に動作します。ただし、もう一度呼び出すと、コンテンツのない JFrame が表示されます。JFrame とすべてをドラッグできますが、何も表示されないだけです。これは、最初に実行したときに機能することを考えると独特ですが、その後は機能しません。これが私のコードです:

    public void prefetch (){
    try{
        pageURLs = mangaEngine.getPageList();
        monitor = new ProgressMonitor(parent, "Loading Chapter..,", null, 0, mangaEngine.getPageList().length);
        pages = new StretchIconHQ[pageURLs.length];
        //Resets page counter to first page by fetching pages in reverse order
        monitor.setMaximum(pageURLs.length-1);
        for(int i = pageURLs.length-1; i>=0; i--){
            pages[i] = mangaEngine.loadImg(pageURLs[i]);
            monitor.setProgress(pageURLs.length-1-i);
            monitor.setNote("Loading Image:" + (pageURLs.length-1-i) + " of " + (pageURLs.length-1));
        }

    }
    catch(Exception ex){
        ex.printStackTrace();
    }
}

それを修正する方法についてのアイデアはありますか?

4

1 に答える 1

1

SwingWorker によって作成されたバックグラウンド スレッドなどで、実行時間の長いコードを実行する必要があります。

実際、進捗モニターのチュートリアルでは、これを正確に行う方法について説明しています。

  • SwingWorker を作成する
  • それに PropertyChangeListener を追加します
  • 「進行状況」プロパティを聞く
  • SwingWorker の進行状況でモニターの進行状況を更新します。
于 2013-11-28T16:43:30.600 に答える