java多线程下载工具(一)

原创 2012年03月29日 17:07:37


1、  主界面的搭建

效果图:

分析:界面的工具栏是一个JToolBar,导航栏是一个JTree、资源列表为JTable、资源信息列表为JList。注意:这些都不是简单的拖控件式是现代的而是写代码的哦。

 下面是部分主要代码:

public void createMainFrame() {
		// TODO Auto-generated method stub
		Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
		// 导航滚动
		JScrollPane navPane = new JScrollPane(navTree);
		JScrollPane downloadPane = new JScrollPane(downloadTable);
		int downloadPaneHeight = (int) (screen.height / 1.5);
		int downloadPaneWidth = (int) (screen.width / 0.8);
		downloadPane.setPreferredSize(new Dimension(downloadPaneWidth,
				downloadPaneHeight));
		JScrollPane infoPane = new JScrollPane(infoJList);
		// 主界面右边的分隔Pane
		JSplitPane rightPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,
				downloadPane, infoPane);
		rightPane.setDividerLocation(500);
		rightPane.setDividerSize(3);
		// 主界面的分隔Pane
		JSplitPane mainPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
				navPane, rightPane);
		mainPane.setDividerSize(3);
		mainPane.setDividerLocation((int) (screen.width / 5.5));

		this.add(mainPane);
		this.setPreferredSize(new Dimension(screen.width, screen.height - 30));
		this.setVisible(true);
		this.setTitle("多线程下载工具");

	}

public static void main(String[] args) {   // TODO Auto-generated method stub

  MainFrame mFrame = new MainFrame();   mFrame.createTree();//调用创建导航树的方法。   mFrame.createTable();   mFrame.createList();   mFrame.createBar();   mFrame.createMainFrame();

 }

/**   * 创建左边的导航树列表:正在下载、下载失败、下载完成   *   * @author Administrator   */  public void createTree() {   // TODO Auto-generated method stub

  // 实例化各个节点(任务节点、正在下载节点、下载失败节点、下载完成节点)   DownloadRootNode taskNode = new DownloadRootNode();   DownloadingNode downloadingNode = new DownloadingNode();   DownloadFailNode failNode = new DownloadFailNode();   DownloadFinishNode finishNode = new DownloadFinishNode();

  // 根节点   DefaultMutableTreeNode root = new DefaultMutableTreeNode();   DefaultMutableTreeNode tn = new DefaultMutableTreeNode(taskNode);   root.add(tn);

  // 创建各个节点并且将各个节点添加到任务节点的子节点中

  tn.add(new DefaultMutableTreeNode(downloadingNode));   tn.add(new DefaultMutableTreeNode(failNode));   tn.add(new DefaultMutableTreeNode(finishNode));   this.navTree = new NavigationTree(root);   // navTree.setCellRenderer(new NovigationTreeCellRender());  }

 

NavigationTree类:设置导航树的相关信息(根节点的隐藏、渲染器等)界面上的文字及图片等都是通过渲染器来渲染上去的。

 

public class NavigationTree extends JTree {

 public  NavigationTree(DefaultMutableTreeNode root) {
  // TODO Auto-generated constructor stub
  super(root);
  this.setRootVisible(false);
  this.setShowsRootHandles(true);
  this.setCellRenderer(new NavigationTreeCellRender());//为每一个节点设置渲染器
  //展开第一层节点
  for (int i = 0; i < root.getChildCount(); i++) {
   DefaultMutableTreeNode node = (DefaultMutableTreeNode)root.getChildAt(i);
   this.expandPath(new TreePath(node.getPath()));
  }
 }

}

渲染器的实现:

public class NavigationTreeCellRender extends DefaultTreeCellRenderer 
implements TreeCellRenderer
 {
	public Component getTreeCellRendererComponent(JTree tree, Object value,
			boolean sel, boolean expanded, boolean leaf, int row,
			boolean hasFocus) {
		// TODO Auto-generated method stub
		 super.getTreeCellRendererComponent(tree, value, sel,expanded,leaf, row, hasFocus);
		
		// 得到树节点
		DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;

		// 得到节点对象
		DownloadNode obj = (DownloadNode) node.getUserObject();
		
		// 设置文本和图片
		if (obj != null) {
			this.setIcon(obj.getImageIcon());
			this.setText(obj.getText());
		}
		return this;
	}
}


到这里,左边导航树基本已经实现,其他的实现思路基本一致,

 

这里可能说的不是很清楚,后续会继续更新,最后昨完了本人会把完整的源代码上传。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Java多线程下载工具(四)

4、悬浮窗体的实现: 效果图 代码: 首先在main窗体中定义一个悬浮窗体变量,并实力化 private SuspendWindow suspendWindow; this.suspen...

java多线程下载工具(三)

3、JToolBar和JList的实现: 这两个的实现都相对与JTable的实现来说都比较简单,这里直接贴码。 JToolBar: private void createBar() { /...

java多线程下载工具(二)

2、资源列表(JTable)的实现, 这是整个主界面的重点也是难点!!!我将尽可能的详细介绍,希望能够将清楚。 由于jTable中的每一列的数据(状态、进度、下载速度、已下载、已用时间、剩余时间)...

Java之多线程下载工具类

1、多线程下载工具类import java.net.URL; import java.io.InputStream; import java.io.RandomAccessFile; import j...

多线程断点下载工具

多线程断点下载工具需要完成以下几个功能: * 1.通过提供的网络文件地址,下载該文件 * 2.要求使用多个线程同时下载,并且实时更新下载进度(0%~100%) * 3.要求能够实现断点功能(扩展) ...

java实例_多线程下载工具

  • 2011-02-13 14:46
  • 530KB
  • 下载

多线程下载工具 MultiGet

转自开源社区http://www.oschina.net/p/multiget MultiGet 是一个非常容易使用的图形界面多线程下载工具。它支持基本的 http/ftp协议,支持断点续传,动...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)