2017-09-12 3 views
0

だから私は不明なことを理解するJProgressBarsしかし、私は明確なものを行う方法を理解していません。たとえば、ゲームをロード中であることを示すためにJProgressBarを使用しているとします。Java:物事を読み込むために明確なJProgressBarを取得するにはどうすればよいですか?

private void load() { 
    myInt = 5; 
    myDouble = 1.2; 
    //initialize other variables 
} 

そして私は、私からの情報をロードする4つのファイルを持っていると言う:このゲームのロードでは、私はいくつかのファイルから情報をロードし、変数を初期化したい情報を持っています。これをどのように翻訳して、正確なローディングバーを100%から出すのですか?

+1

可能重複[JProgressBarのスイング中のデータのロード中(https://stackoverflow.com/questions/13366801/jprogressbar-while-data-loading-in-swing) –

+0

@ NisheshPratapこれは役に立たなかったし、その人が何をしようとしているのか分からなかった。 –

答えて

0

別のスレッドで作業を行い、作業の進捗に合わせてプログレスバーのモデルを更新する必要があります。

Swingイベントスレッドでモデル更新を実行することが重要です。これは、更新コードをSwingUtilities.invokeLaterで実行することによって実行できます。例えば

public class Progress { 
    public static void main(String[] args) { 
     JFrame frame = new JFrame("Loading..."); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     JProgressBar progressBar = new JProgressBar(0, 100); 
     frame.add(progressBar); 
     frame.pack(); 
     frame.setVisible(true); 

     // A callback function that updates progress in the Swing event thread 
     Consumer<Integer> progressCallback = percentComplete -> SwingUtilities.invokeLater(
      () -> progressBar.setValue(percentComplete) 
     ); 

     // Do some work in another thread 
     CompletableFuture.runAsync(() -> load(progressCallback)); 
    } 

    // Example function that does some "work" and reports its progress to the caller 
    private static void load(Consumer<Integer> progressCallback) { 
     try { 
      for (int i = 0; i <= 100; i++) { 
       Thread.sleep(100); 
       // Update the progress bar with the percentage completion 
       progressCallback.accept(i); 
      } 
     } catch (InterruptedException e) { 
      // ignore 
     } 
    } 
} 
+0

これは私が自分自身の進歩を測る必要があるということですか?たとえば、3つの変数をロードしていた場合、変数を初期化するたびに毎回進捗状況を設定する必要があります。また、 ' - >'は何をしますか? –

+0

はい、プログレスバーを自分で更新する必要があります。矢印の演算子を使って[この回答](https://stackoverflow.com/questions/15146052/what-does-the-arrow-operator-do-in-java)を参照してください。 – teppic

関連する問題