...为什么我的下载每次都看不到进度条,而是一下子就下好了呢?_百度知...

发布网友 发布时间:2024-10-01 23:07

我来回答

1个回答

热心网友 时间:2024-10-17 13:40

建立新的线程来处理下载。去看Thread的API有详细说明。例如本来是:
downloading();
System.out.println("下载完成");
就改成:
class DownloadListener {//这个class自己找个地方放。
public void downloadInProgress(double percent) {
System.out.println("已下载" + percent);
}
public void downloadCompleted() {
System.out.println("已下载完成");
}
}
//从这里开始应该被改成的内容
DownloadListener downloadListener = new DownloadListener();
new Thread() {
public void run() { //这里写第二线程的内容
downloading(downloadListener);//于是downloadListener被传入了downloading函数,就可以在downloading函数内部通过呼叫downloadListener的downloadInProgress和downloadCompleted来通知第一线程下载情况。
}
}.start(); //第一线程会在这里启动第二线程,然后不管第二线程执行了什么是否完成,直接执行下一句。
System.out.println("第二线程已经启动");
//例子里很多System.out.println是为了简明。实际情况一般是修改一个给用户看的状态栏JLabel,这里下载进行中时,应该是更新一个JProgressBar。

热心网友 时间:2024-10-17 13:42

建立新的线程来处理下载。去看Thread的API有详细说明。例如本来是:
downloading();
System.out.println("下载完成");
就改成:
class DownloadListener {//这个class自己找个地方放。
public void downloadInProgress(double percent) {
System.out.println("已下载" + percent);
}
public void downloadCompleted() {
System.out.println("已下载完成");
}
}
//从这里开始应该被改成的内容
DownloadListener downloadListener = new DownloadListener();
new Thread() {
public void run() { //这里写第二线程的内容
downloading(downloadListener);//于是downloadListener被传入了downloading函数,就可以在downloading函数内部通过呼叫downloadListener的downloadInProgress和downloadCompleted来通知第一线程下载情况。
}
}.start(); //第一线程会在这里启动第二线程,然后不管第二线程执行了什么是否完成,直接执行下一句。
System.out.println("第二线程已经启动");
//例子里很多System.out.println是为了简明。实际情况一般是修改一个给用户看的状态栏JLabel,这里下载进行中时,应该是更新一个JProgressBar。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com