0

私が作成しているプログラムのクラスの 1 つは、ダウンロード マネージャーです。これは、ダウンロードとそのパーセンテージを処理するメイン コードです。

byte data[] = new byte[1024];
        int count;
        while ((count = in.read(data, 0, 1024)) != -1)
        {
            downloadedPerc += (count/getModPackSize())*100;
            System.out.println(downloadedPerc);
            progressBar.setValue((int) downloadedPerc);
            label.setText(downloadedPerc + "%");
            fout.write(data, 0, count);
        }

downloadedPercダブルタイプです。コンソール出力として、常に 0.0 を取得しています。なぜこれが起こっているのでしょうか?ダウンロードが非常に遅くなり、約 5kb/秒になりました。% の計算を削除すると、ダウンロードがかなり速くなります。なぜでしょうか?

4

2 に答える 2

1

この声明を見てください:

downloadedPerc += (count/getModPackSize())*100;

countdouble 型にするか、分子を double に変換する必要があります。

例:downloadedPerc += (count*1.0/getModPackSize())*100;正常に動作します。

于 2012-09-10T08:11:52.127 に答える
0

私の記憶が正しければ、プログレスバーの使用は簡単ではありません。プロパティ変更イベント リスナー、アクション リスナー、swing ワーカーが必要です。ダウンロード タスクは、swing コンポーネントとは別のスレッドにある必要があります。そうしないと、フリーズします。こちらの Java チュートリアル Web サイトの指示に従ってみてください。

http://docs.oracle.com/javase/tutorial/uiswing/components/progress.html

コードへの直接リンクは次のとおりです。

http://docs.oracle.com/javase/tutorial/uiswing/examples/components/ProgressBarDemoProject/src/components/ProgressBarDemo.java

于 2012-09-10T08:27:30.133 に答える