0

我正在制作的程序类之一是下载管理器。这是我处理下载及其百分比的主要代码。

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;

count应该是 double 类型,或者您应该将分子转换为 double。

例如:downloadedPerc += (count*1.0/getModPackSize())*100;会工作得很好。

于 2012-09-10T08:11:52.127 回答
0

如果我没记错的话,使用进度条并不简单。您将需要属性更改事件侦听器、动作侦听器和摇摆工作者。下载任务必须与摆动组件在不同的线程中,否则它将冻结。尝试按照此处 Java 教程网站上的说明进行操作:

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 回答