我在我的应用程序中使用进度条,我从webaite下载内容并将其保存到我的数据库中。我已经设置了一个进度条来指示下载是否已完成,但问题是当所有内容都保存在我的数据库中时,进度条变为100%。虽然下载它应该是5%,10%,25%等等,然后保存后它将变为100%。我该怎么做?我写的示例代码
timer = new Timer(interval, new ActionListener() {
public void actionPerformed(ActionEvent evt) {
if (j ==100){
//a beep is heard when download is completed
Toolkit.getDefaultToolkit().beep();
timer.stop();
jButton3.setEnabled(true);
pb.setValue(0);
String str = "<html>" + "<font color=\"#FF0000\">" + "<b>" + "Downloading completed." + "</b>" + "</font>" + "</html>";
lbldownload.setText(str);
}
j = j + 1;
pb.setValue(j);
}
});
jButton3.setEnabled(false);
j = 0;
String str = "<html>" + "<font color=\"#008000\">" + "<b>" + "Downloading is in progress......." + "</b>" + "</font>" + "</html>";
lbldownload.setText(str);
timer.start();
}
答案 0 :(得分:1)
不要阻止EDT(事件调度线程) - 当发生这种情况时,GUI将“冻结”。而是为长时间运行的任务实现SwingWorker
。有关详细信息,请参阅Concurrency in Swing。
另请参阅ProgressMonitorInputStream
,因为这是在监控下载。
答案 1 :(得分:0)
如果您知道输入数据的长度,请记录您已加载的数量,并使用这两个数字之间的比率来获得百分比。定期向您的用户界面报告,以便更新进度条。
如果您不知道预期的大小,则无法估算百分比。