2

特定の値を操作すると、JProgressBar がフリーズして計算を停止する理由が理解できないようです。たとえば、次のコードは常にゼロしか表示しません。

     ...
       int value = (100/maxGenerations)*i;       //maxGenerations = 2500
       final int barValue = value;
       SwingUtilities.invokeLater(new Runnable() {
          public void run() {
          progressBar.setValue(barValue);
        }
     });

ただし、同じ実装で次のことを行うと、機能します(もちろん、ガベージ計算のように正確ではありません):

     ...
       int value = (i/100);         //where 'i' increments until = 2500
       final int barValue = value;
       SwingUtilities.invokeLater(new Runnable() {
          public void run() {
          progressBar.setValue(barValue);
        }
     });

なぜアイデアはありますか?

4

1 に答える 1

1

進行状況の範囲 (おそらく 0 ~ 2500) がわかっている場合は、 を介して JProgressBar に伝えることができますprogressBar.setMaximum(2500)。この方法では、変数は必要ありません。進行状況バーに実際barValueの進行状況を知らせるだけです。

于 2011-03-19T06:06:31.720 に答える