- 1、本文档共30页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《疯狂java实例-第11章_多线程下载工具》.doc
第11章 多线程下载工具
11.1 多线程下载工具简介
我们平时在使用互联网的时候,都会使用到许许多多的下载工具,例如Flashget、迅雷等,这些工具可以十分方便的对互联网资源进行下载。这些工具通过图形界面,将下载的信息展示给用户,这些下载信息包括:下载资源的大小、下载进度、下载速度以用其他一些可以让用户了解下载进度的信息。其实这些下载工具所提供的功能,我们同样可以使用Java来实现,这些工具包括HTTP下载、FTP下载以及BT的支持等,另外,下载工具还需要提供多线程下载、断点续传等功能,本章主要介绍如何实现一个HTTP的多线程下载工具。
11.2 建立下载工具的界面
下载工具包括主界面、添加下载资源的界面、悬浮窗口与系统任务栏图标。下载工具的主界面主要向用户展示下载资源的信息,例如显示正在下载的资源信息、已下载完成的资源信息等。添加下载资源界面主要让用户输入需要下载的资源地址等信息,让下载工具可以对该资源进行连接与下载。悬浮窗口就好像Flashget与迅雷这些下载工具一样,在屏幕中建立一个小窗口,该窗口可以展现一些下载信息给用户,如图11.1所示。系统任务图标主要是将下载工具的图标显示到系统的任务栏中。接下来,我们将介绍如何实现这些相关的界面。
图11.1 迅雷的悬浮窗口
11.2.1 主界面
下载工具的主界面主要包括导航树、下载列表、资源信息这三大块,导航树我们可以使用swing的JTree来实现,下载列表可以使用JTable实现,资源信息可以使用JList来实现。
导航树可以让用户选择浏览不同的资源,例如正在下载的资源、下载失败的资源以及成功下载的资源,如果我们需要添加其他的功能,例如对资源进行分类等,都可以向导航树中加入相关的节点。
下载列表主要是将资源的信息展示给用户,包括资源的状态、资源名称、下载速度、进度以及使用时间等。下载列表使用JTable实现,而下载列表中的每一列都需要进行不同的渲染,例如资源的状态需要显示相应的图片、下载进度需要使用进度条进行显示等。
资源信息一块使用JList实现,主要将资源的部分信息显示到该区域。本章中主界面对应的是MainFrame.java,主界面的最终效果如图11.2所示。
图11.2 主界面效果
如图11.2所示,主界面除了上述的三大区域外,还提供了一个工具栏,用于存放对资源的相关操作:新建资源、下始下载、暂停下载、删除选中资源和删除已经完成的任务。为了达到我们所需要的效果,主界面三个区域(导航树、资源列表和资源信息)都需要进行特别的处理,以下的章节将详细描述如何实现这三个区域。
11.2.2 导航树
如图11.2所示,导航树主要有一个任务节点,任务节点下面包括正在载节点、下载失败节点和下载完成节点。在建立导航树前,我们需要准备表示这些节点的对象。新建一个DownloadNode接口,用于表示导航树的节点,该树下面所有的节点对象都必须实现这个接口。
代码清单:code\flashget\src\org\crazyit\flashget\navigation\DownloadNode.java:
public interface DownloadNode {
/**
* 获得节点名称
* @return
*/
String getText();
/**
* 返回对应图标
* @return
*/
ImageIcon getImageIcon();
}
该接口定义了两个方法,分别返回节点的文字与图标,那么可以新建一个正在下载的节点对象,实现DownloadNode。
代码清单:code\flashget\src\org\crazyit\flashget\navigation\DownloadingNode.java:
public class DownloadingNode implements DownloadNode {
public ImageIcon getImageIcon() {
return ImageUtil.DOWNLOADING_NODE_IMAGE;
}
public String getText() {
return 正在下载;
}
}
DownloadingNode表示一个正在下载的节点,以同样的方法,新增其他节点对应的实现类,那么在创建导航树的时候,就可以为导航树设置渲染器。在树的渲染器中,我们可以得到相应的节点对象(DownloadNode的实现类),再根据这些对象得到文本与图标。
代码清单:code\flashget\src\org\crazyit\flashget\ui\NavigationTreeCellRender.java:
public Component getTreeCellRende
您可能关注的文档
- 《张汉熙高级英语lesson 0102》.ppt
- 《强光手电筒 (文库版)》.doc
- 《强光摄录手电筒SDT801》.pdf
- 《形象大使大赛方案详细版level1》.doc
- 《很好的编程练习题目含C++、java版答案》.docx
- 《徕卡Leica_TPS1200断面监测机载与后处理软件操作手册_V4.3》.pdf
- 《徕卡Leica_TPS400、TPS800断面监测机载与后处理软件用户手册_V4.0》.pdf
- 《微博LAMP架构演变》.pdf
- 《德国E+H分析仪表:污泥界面 Sludge level CUC101》.pdf
- 《德国诺德减速机系列产品》.ppt
- 2025年浙江省公务员考试时事政治考试试卷带解析必考【全国通用】.docx
- 2025年江苏省公务员考试时事政治考试试卷带解析及参考答案(最新).docx
- 2025年福建省公务员考试时事政治考试试卷带解析带答案(达标题).docx
- 2025年辽宁省公务员考试时事政治考试试卷带解析及参考答案(培优A卷).docx
- 单招面试技巧和注意事项.docx
- 2025年浙江省公务员考试时事政治考试试卷带解析附答案(精练).docx
- 2025年辽宁省公务员考试时事政治考试试卷带解析及必背答案.docx
- 2025年浙江省汽车驾驶员高级理论知识考试试卷带解析必考【必背】.docx
- 2025年江西省公务员考试时事政治考试试卷带解析附参考答案(综合卷).docx
- 2025年江苏省公务员考试时事政治考试试卷带解析附参考答案(基础题).docx
文档评论(0)