网站大量收购独家精品文档,联系QQ:2885784924

《疯狂java实例-第11章_多线程下载工具》.doc

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

文档评论(0)

mwap + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档