如何使用进度条从网站下载应用程序?

时间:2014-03-02 14:59:30

标签: java swing event-dispatch-thread jprogressbar

我在我的应用程序中使用进度条,我从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();



     }

2 个答案:

答案 0 :(得分:1)

不要阻止EDT(事件调度线程) - 当发生这种情况时,GUI将“冻结”。而是为长时间运行的任务实现SwingWorker。有关详细信息,请参阅Concurrency in Swing

另请参阅ProgressMonitorInputStream,因为这是在监控下载。

答案 1 :(得分:0)

如果您知道输入数据的长度,请记录您已加载的数量,并使用这两个数字之间的比率来获得百分比。定期向您的用户界面报告,以便更新进度条。

如果您不知道预期的大小,则无法估算百分比。