我正在制作的程序的一个类是下载管理器。这是我处理下载及其百分比的主要代码。
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
的类型为double。作为控制台输出,我一直都是0.0。为什么会发生这种情况?
我的下载现在非常慢,大约5kb /秒,如果我删除%计算,下载速度要快得多,为什么会这样呢?
答案 0 :(得分:1)
看一下这句话:
downloadedPerc += (count/getModPackSize())*100;
count
应该是double类型,或者你应该将分子转换为double。
例如:downloadedPerc += (count*1.0/getModPackSize())*100;
可以正常工作。
答案 1 :(得分:0)
如果我没记错,使用进度条并不简单。你需要属性改变事件监听器,动作监听器和摇摆工作者。下载任务必须与swing组件处于不同的线程,否则它将冻结。尝试按照Java教程网站上的说明进行操作:
http://docs.oracle.com/javase/tutorial/uiswing/components/progress.html
以下是代码的直接链接: