java多线程下载工具(一)
来源:互联网 发布:网络兼职什么靠谱 编辑:程序博客网 时间:2024/05/29 04:38
1、 主界面的搭建
效果图:
分析:界面的工具栏是一个JToolBar,导航栏是一个JTree、资源列表为JTable、资源信息列表为JList。注意:这些都不是简单的拖控件式是现代的而是写代码的哦。
下面是部分主要代码:
public void createMainFrame() {// TODO Auto-generated method stubDimension 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);// 主界面右边的分隔PaneJSplitPane rightPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,downloadPane, infoPane);rightPane.setDividerLocation(500);rightPane.setDividerSize(3);// 主界面的分隔PaneJSplitPane 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多线程下载工具(一)
- java多线程下载工具(二)
- java多线程下载工具(三)
- Java多线程下载工具(四)
- java多线程下载工具
- Java多线程下载工具(五)——任务栏图标设置
- java实现一个多线程下载工具类
- java多线程:多线程(一)
- Ubuntu使用(一):下载工具篇
- Java--多线程(一)
- java(多线程 一)
- JAVA多线程(一)
- java多线程(一)
- Java多线程(一)
- Java多线程(一)
- java多线程(一)
- Java多线程(一)
- Java多线程(一)
- linux下查看文件编码及修改编码
- TNW:Tumblr博文已超200亿
- android开发的人要坚持
- zoj1755
- 关于MFC自动生成的各个类的指针访问
- java多线程下载工具(一)
- JMeter 通过 JDBC 访问 Oracle 和 MySQL 的步骤及实例
- (转)教你深度睡眠,熬夜的失眠的程序员看看
- poj2406
- C#对多态的理解
- 二进制文件读写
- 用万用表量量你的软件 ——移动应用耗电量的量化分析
- MFC多文档程序启动时一个文档创建两个视图
- 左移递减数列查找某一个数