3

に多くの投稿がありますがJProgressBar、次の問題の解決策が見つかりません。JProgressBarから受信した測定バイトを更新するにはどうすればよいInputStreamですか?

たとえば、次のコードがあります。

int bytesRead;
byte buffer = new byte[1024];
ByteArrayOutputStream getBytes = new ByteArrayOutputStream();

while ((bytesRead = dis.read(buffer)) != -1) {
    getBytes.write(buffer, 0, bytesRead);
}

return(getBytes.toByteArray());
4

2 に答える 2

2

読み取るバイト数がわかっている場合は、それを最大値として設定し、ループの反復ごとに読み取ったバイト数だけ進行状況バーをインクリメントできます。

読み取るバイト数がわからない場合は、進行状況バーを不確定モードに設定すると、進行状況が「ある程度」進行していることを示すアニメーションが表示されます。

于 2011-11-27T18:37:24.517 に答える
1

ストリーム内の合計データ サイズがわかっている場合は、次のことができます。

int nBytesReceived = 0;
int nTotalBytesInStream = ... // Total data size
progressBar.setMaximum(100) ;
progressBar.setMinimum(0) ;
while ((bytesRead = dis.read(buffer)) != -1) {
    getBytes.write(buffer, 0, bytesRead);
    nBytesReceived += bytesRead;
    progressBar.setValue(nBytesReceived*100/nTotalBytesInStream);
}

nTotalBytesInStreamないことを確認してください0

このSO の質問は、inputStream のサイズを把握するのに役立つ場合があります

于 2011-11-27T18:35:51.197 に答える