如迅雷尔
来源:互联网 发布:网络直销是是骗局吗 编辑:程序博客网 时间:2024/05/02 04:36
这两天忙里偷闲,写了一个部门功能类型迅雷的.但还不是非常全.
现在就把个人的一些心得与大家分享一下:
首先是界面设计上:
从整个界面可以看出这是由JTree,JTable这两个相对来说比较重量级的组件组成.
所以了两个函数一个用于创建JTree,另一个用于创建JTable
其部分代码如下:
1.JT
* initJTree(构造JTree)
*/
private JTree createJTree(final CardLayout cardLayout1, final JPanel leftJP) ...{
DefaultMutableTreeNode top = new DefaultMutableTreeNode();
top.setUserObject(new JtreeNode(XUN_LEI, Pic.crateIcon("jtree/root.png"), "下载"));
MyMutableTreeNode.createNode(top);
JTree jtree = new JTree(top);
jtree.addTreeSelectionListener(new TreeSelectionListener() ...{
@Override
public void valueChanged(TreeSelectionEvent e) ...{
TreePath path = e.getPath();
if (path != null) ...{
DefaultMutableTreeNode node = (DefaultMutableTreeNode) path.getLastPathComponent();
JtreeNode jtreeNode = (JtreeNode) node.getUserObject();
switch (jtreeNode.getType()) ...{
case ON_DOWN:
cardLayout1.show(leftJP, "正在下载");
break;
case BEEN_DOWNED:
cardLayout1.show(leftJP, "已下载");
break;
case DUSTBIN:
cardLayout1.show(leftJP, "垃圾箱");
break;
}
}
}
});
jtree.setCellRenderer(new MyJTreeCellRenderer());
return jtree;
}
MyJTreeCellRenderer是自己定义的渲染器,实现接口AbstractTableCellRenderer
2.JTable
* crate The Three JTable
*/
private JTable crateJTable(int type) ...{
JTable jtable = null;
switch (type) ...{
case ON_DOWN:
String[] ondownStr = ...{"状态", "文件名称", "文件大小", "进度", "速度", "资源", "剩余时间", "用时", "文件类型"};
int[] ondownIn = ...{40, 100, 100, 200, 40, 50, 80, 100, 400};
jtable = new JTable(new OndownTableModel(allTaskManager.getSubTask(ON_DOWN), statusHash), new OndownTableColumnModel(ondownIn, ondownStr));//正在下载
break;
case BEEN_DOWNED:
String[] beenDownAndDustbinStr = ...{"状态", "文件名称", "博客", "文件大小", "文件类型", "注释", "日期"};
int[] beenDownAndDustbinIn = ...{40, 100, 100, 200, 400, 200, 100};
jtable = new JTable(new DustbinTableModel(allTaskManager.getSubTask(BEEN_DOWNED), statusHash), new BeenDownedTableColumnModel(beenDownAndDustbinIn, beenDownAndDustbinStr));//已经下载
break;
case DUSTBIN:
String[] beenDownAndDustbinStr1 = ...{"状态", "文件名称", "博客", "文件大小", "文件类型", "注释", "日期"};
int[] beenDownAndDustbinIn1 = ...{40, 100, 100, 200, 400, 200, 100};
jtable = new JTable(new DustbinTableModel(allTaskManager.getSubTask(DUSTBIN), statusHash), new DustbinTableColumnModel(beenDownAndDustbinIn1, beenDownAndDustbinStr1));//垃圾箱
break;
}
jtable.setRowHeight(16);
jtable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);//设置最大化时,表也自动跟着最大化
jtable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
jtable.getTableHeader().setReorderingAllowed(false);
return jtable;
}
设置一些相关参数,根据请求的类型进行创建JTable,三个JTable创建好之后,我们就可以点击JTree跳到相应的界面,这时我们最好用CardLayout, 就可以随意切换到相应的JTable.
在界面设计上就讲到这些.由于其它的设计相对比较繁杂,这里也就不多说了.
其次就是流程设计:
程序主要有三个主要板块:正在下载,已下载,垃圾箱.(相应的由三个JTabel)
当从"正在下载"里删除一个任务时,它会被放到"垃圾箱",但当把它从"垃圾箱"移动时,它又会被移动到"正在下载",
我们把每一个任务定义为SubTask:这主要有如下这些参数:
private int type;//任务类型 (正在下载,已经下载,垃圾箱)
private int status = ONDOWNLOAD;//任务状态(正在下载,暂停下载,下载失败,下载完毕)
private String fileName;//文件名称
private long length;//文件大小
private int progress =40;//文件进度
private String resource;//资源
private float speed;//下载速度
private int restTime;//剩余时间
private int takeTime;//用时(已经花了的时间)
private String fileType;//文件类型
private String note;//文件注释
private Time date;//下载日期
private String blog;//博客
接着定义三个TaksManger(为三个JTable( "正在下载","已下载","垃圾箱")
每个TaskManager里包涵着相应的SubTask,TaskManager里的变量是:
List<SubTask> list;
那么,当我们要从一个任务区里移动一个任务到另一个任务区里,要怎么实现呢?
我们就必须再定义一个用来管理这三个TaksManager. 这个类叫做AllTaksManager
用来管理这三个TaksManager,当移动一个任务时要把它先把它添加到目的列表,再从相应的列表中除去.
具体实现也就是对三个列表的操作.以上是比较简单但又是核心的一些设计.
- 如迅雷尔
- 如何用迅雷从百度云盘下大文件
- 简单几步让App Store软件下载快如迅雷
- 【快如闪电 掌握迅雷5.9常用快捷键§小米】
- 教你如何用卡巴斯基屏蔽迅雷上传
- 迅雷
- 迅雷
- 挖掘:如何用迅雷下载4399小游戏站内的所有游戏
- 如何用迅雷【下载】百度云盘(百度云管家)的文件
- 如何用迅雷或QQ旋风下载百度云上的资源?
- 百度网盘不能下载文件,如何用迅雷下载(链接为网盘链接)
- IT这一行,如可高速下载国外资源之迅雷设置免费SSH代理下载国外资源
- 教你如何用迅雷下载百度云资源、如何解决百度云大文件下载、限速问题。
- 迅雷公司概况
- 迅雷实用技巧
- 迅雷6
- 迅雷笔面经~
- 迅雷7
- 感动一下!一个妻子写给网管丈夫的话(很经典哦)
- 背诵, 背诵, 背诵, 我就是死也要带走
- jsp+MVC分页读取数据库中的数据
- wondow print
- Web版操作系统:EyeOS、YouOS、ORCA、Desktoptwo、goowy http://blog.sina.com.cn/s/blog_4af93f1b010006fe.html
- 如迅雷尔
- C语言之指针
- jsp页面checkbox数组递交到Action代码---测试成功
- mysql、php配置
- 使用MySql Connector/Net
- 图的遍历和生成树求解实现|图遍历,生成树,实现,邻接矩阵,邻接表,深度广度遍历,最小生成树
- Visual C#的Excel编程(转)
- JDK 6简化web service的开发
- Google-谷歌新版主页http://www.zhuoqun.net/html/y2007/799.html