簡體   English   中英

如何使用JProgressBar衡量任務進度並對其進行更新

[英]How to measure task progress and update it using JProgressBar

我想顯示已完成任務的百分比。 但是由於任務的時間長短取決於要從文件中讀取的數據量,所以我無法像現在那樣硬編碼pb3.setValue(...)的值。 我知道我可以使用setIntermediate(true)來顯示任務正在進行中,但是有什么方法可以基於文件的大小確定確切的任務進度。

這是我嘗試測量的操作,其中fileArray[2]是我通過JFileChooser選擇的文本文件

BufferedReader br3 = new BufferedReader(new FileReader(fileArray[2]));
String line;

    while ((line = br3.readLine()) != null) {

        StringBuffer sb3 = new StringBuffer(br3.readLine());
            progress += 1;
            Thread.sleep(10);
            pb3.setValue(Math.min(progress, 100));
        sb3.reverse();
        bwr3.write(sb3.toString());
            txt3.append(sb3.toString());

    }

在此先感謝您的幫助或建議。

嘗試這個:

BufferedReader br1 = new BufferedReader(
            new FileReader(fileArray[1]));

while ((line = br1.readLine()) != null) {

    StringBuffer sb1 = new StringBuffer(
            br1.readLine());
    sb1.reverse();
    String lineReversed = sb1.toString();

    byte[] bytesRead = lineReversed.getBytes();

    for (int i = 0; i < bytesRead.length; i++) {
        totalBytesRead = totalBytesRead
                + bytesRead[i];
    }
}


BufferedReader br1n = new BufferedReader(
        new FileReader(fileArray[1]));

int totalBytesReadNow = 0;
int progress = 0;

while ((line = br1n.readLine()) != null) {

    StringBuffer sb1n = new StringBuffer(
            br1n.readLine());

    sb1n.reverse();

    String lineReversed = sb1n.toString();

    byte[] bytesReadNow = lineReversed.getBytes();

    for (int i = 0; i < bytesReadNow.length; i++) {
        totalBytesReadNow = totalBytesReadNow
                + bytesReadNow[i];

        if (totalBytesReadNow >= totalBytesRead * 0.01) {
            progress = progress + 1;
            totalBytesReadNow = 0;
        }

        pb2.setValue(Math.min(progress, 100));
    }

    bwr1.write(lineReversed + "\n");
    txt2.append(lineReversed);
    Thread.sleep(0, 1);

}

bwr1.flush();
bwr1.close();
br1n.close();
br1.close();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM