首页 java仿迅雷多线程下载工具源码

java仿迅雷多线程下载工具源码

举报
开通vip

java仿迅雷多线程下载工具源码java仿迅雷多线程下载工具源码 附件: 系统全部源码: package ynu.ui; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Insets; import java.awt.MenuItem; import java.awt.PopupMenu; import java.awt.SystemTray; import java.awt.Toolkit; import java.awt.TrayIcon;...

java仿迅雷多线程下载工具源码
java仿迅雷多线程下载工具源码 附件: 系统全部源码: package ynu.ui; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Insets; import java.awt.MenuItem; import java.awt.PopupMenu; import java.awt.SystemTray; import java.awt.Toolkit; import java.awt.TrayIcon; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JList; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; import javax.swing.JScrollPane; import javax.swing.JSplitPane; import javax.swing.JTable; import javax.swing.JToolBar; import javax.swing.KeyStroke; import javax.swing.ListSelectionModel; import javax.swing.SwingUtilities; import javax.swing.Timer; import javax.swing.UIManager; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.TreePath; import ynu.ContextHolder; import ynu.DownloadContext; import ynu.info.Info; import ynu.navigation.DownloadNode; import ynu.navigation.DownloadingNode; import ynu.navigation.FailNode; import ynu.navigation.FinishNode; import ynu.navigation.TaskNode; import ynu.object.Resource; import ynu.state.Downloading; import ynu.state.Failed; import ynu.state.Finished; import ynu.state.Pause; import ynu.util.DateUtil; import ynu.util.FileUtil; import ynu.util.ImageUtil; import javax.swing.UnsupportedLookAndFeelException; 1 @SuppressWarnings("serial") public class MainFrame extends JFrame { // 菜单栏 private JMenuBar mb = new JMenuBar(); // “文件”菜单 private JMenu file = new JMenu("文件(F)"); // “帮助”菜单 private JMenu tool = new JMenu("工具(T)"); // “帮助”菜单 private JMenu help = new JMenu("帮助(H)"); // “新建”菜单项 private JMenuItem build = new JMenuItem("新建", ImageUtil.SUSPEND_NEW_IAMGE); // “开始”菜单项 private JMenuItem star = new JMenuItem("开始", ImageUtil.SUSPEND_START0_IAMGE); // “暂停”菜单项 private JMenuItem paus = new JMenuItem("暂停", ImageUtil.SUSPEND_PAUSE0_IAMGE); // “删除”菜单项 private JMenuItem delet = new JMenuItem("删除", ImageUtil.SUSPEND_DELETE0_IAMGE); // “全部开始”菜单项 private JMenuItem allStart = new JMenuItem("全部开始", ImageUtil.SUSPEND_START_IAMGE); // “全部暂停”菜单项 private JMenuItem allPause = new JMenuItem("全部暂停", ImageUtil.SUSPEND_PAUSE_IAMGE); // “删除已完成任务”菜单 private JMenuItem deleteFinishe = new JMenuItem("移除完成", ImageUtil.SUSPEND_REMOVE_IAMGE); // “退出”菜单项 private JMenuItem exit = new JMenuItem("退出", ImageUtil.SUSPEND_QUIT_IAMGE); // “工具”菜单项 private JMenuItem powerboot = new JMenuItem("开机自动启动赤兔", ImageUtil.SUSPEND_KAIJI_IAMGE); // “工具”菜单项 private JMenuItem shutdown = new JMenuItem("下载完成自动关机", ImageUtil.SUSPEND_GUANJI_IAMGE); // “关于”菜单项 private JMenuItem about = new JMenuItem("关于赤兔", ImageUtil.SUSPEND_HELP_IAMGE); // 下载 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 格弹出菜单,当在表格中单击右键时弹出菜单 private JPopupMenu tablePopupMenu = new JPopupMenu(); // 打开文件 private JMenuItem openFileMenu = new JMenuItem("打开文件", ImageUtil.SUSPEND_OPEN_IAMGE); // 打开文件 private JMenuItem openFolderMenu = new JMenuItem("打开文件夹", ImageUtil.SUSPEND_FOLDER_IAMGE); // 开始任务项 private JMenuItem startTaskMenu = new JMenuItem("开始任务", ImageUtil.SUSPEND_START0_IAMGE); // 暂停任务项 private JMenuItem pauseTaskMenu = new JMenuItem("暂停任务", ImageUtil.SUSPEND_PAUSE0_IAMGE); // 删除任务项 private JMenuItem deleteTaskMenu = new JMenuItem("删除任务", ImageUtil.SUSPEND_DELETE0_IAMGE); // 全部开始项 private JMenuItem allStartMenu = new JMenuItem("全部开始", ImageUtil.SUSPEND_START_IAMGE); // 全部暂停项 private JMenuItem allPauseMenu = new JMenuItem("全部暂停", ImageUtil.SUSPEND_PAUSE_IAMGE); // 全部暂停项 private JMenuItem deleteFinishedMenu = new JMenuItem("删除完成任务 ", ImageUtil.SUSPEND_REMOVE_IAMGE); private AboutDialog aboutDialog = new AboutDialog(this, "关于赤兔", true); 2 // 设置应用程序图标 private ImageIcon appImage = new ImageIcon("images/flashget.gif"); // 导航树 private NavigationTree navTree; // 下载列表 private DownloadTable downloadTable; // 信息列表 private JList infoJList; // 工具栏 private JToolBar toolBar = new JToolBar(); // 新任务界 面 private NewTaskFrame taskFrame; // 所有任务节点 private TaskNode taskNode = new TaskNode(); // 正在下载节点 private DownloadingNode downloadingNode = new DownloadingNode(); // 下载失败节点 private FailNode failNode = new FailNode(); // 下载完成节点 private FinishNode finishNode = new FinishNode(); // 当前用户浏览的节点 private DownloadNode currentNode = taskNode; // 信息列表 的对象 private final static String FILE_SIZE_TEXT = "文件大小: "; private final static String FILE_PATH_TEXT = "文件路径: "; private final static String DOWNLOAD_DATE_TEXT = "下载时间: "; private final static String RESOURCE_INFO_TEXT = "下载状态: "; private List<Info> infoList = new ArrayList<Info>(); private Info fileSize = new Info(FILE_SIZE_TEXT); private Info filePath = new Info(FILE_PATH_TEXT); private Info downloadDate = new Info(DOWNLOAD_DATE_TEXT); private Info info = new Info(RESOURCE_INFO_TEXT); // 悬浮窗口 private SuspendWindow suspendWindow; // 任务栏图标 private TrayIcon trayIcon; // 任务栏图标菜单 private PopupMenu popupMenu = new PopupMenu(); private MenuItem openItem = new MenuItem("打开/关闭"); private MenuItem newItem = new MenuItem("新建下载任务"); private MenuItem startItem = new MenuItem("开始全部任务"); private MenuItem pauseItem = new MenuItem("暂停全部任务"); private MenuItem removeItem = new MenuItem("删除完成任务"); private MenuItem quitItem = new MenuItem("退出"); private BufferedImage trayIconImage = ImageUtil .getImage(ImageUtil.TRAY_ICON_PATH); @SuppressWarnings("serial") private Action newTask = new AbstractAction("新任务", new ImageIcon( "images/tool/new-download.gif")) { public void actionPerformed(ActionEvent e) { newTask(); } }; @SuppressWarnings("serial") private Action start = new AbstractAction("开始", new ImageIcon( "images/tool/do-download.gif")) { public void actionPerformed(ActionEvent e) { start(); } }; @SuppressWarnings("serial") private Action pause = new AbstractAction("暂停", new ImageIcon( "images/tool/pause.gif")) { 3 }; public void actionPerformed(ActionEvent e) { pause(); } @SuppressWarnings("serial") private Action delete = new AbstractAction("删除任务", new ImageIcon( "images/tool/delete.gif")) { public void actionPerformed(ActionEvent e) { delete(); } }; @SuppressWarnings("serial") private Action deleteFinished = new AbstractAction("移除已完成任务", new ImageIcon("images/tool/remove-finished.gif")) { public void actionPerformed(ActionEvent e) { deleteFinished(); } }; ActionListener refreshTable = new ActionListener() { public void actionPerformed(ActionEvent e) { // 刷新列表 downloadTable.updateUI(); } }; ActionListener fileItemListener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { } }; ActionListener helpItemListener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String cmd = e.getActionCommand(); if (cmd.equals("关于赤兔 ")) { // 显示关于对话框 aboutDialog.showDialog(); } }; } public MainFrame() { // 设置Windows风格 try { UIManager .setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); } catch (ClassNotFoundException cnfe) { cnfe.printStackTrace(); } catch (InstantiationException ie) { ie.printStackTrace(); } catch (IllegalAccessException iae) { iae.printStackTrace(); } catch (UnsupportedLookAndFeelException ulafe) { ulafe.printStackTrace(); } // 更新主界面 SwingUtilities.updateComponentTreeUI(this.getContentPane()); // 更新菜单条以 及SwingUtilities.updateComponentTreeUI(mb); // 更新关于对话框以及 SwingUtilities.updateComponentTreeUI(aboutDialog); // 设置应用程序图标 setIconImage(appImage.getImage()); // 创建导航树 createTree(); 4 } createDownloadTable(); // 创建信息列表 createList(); this.taskFrame = new NewTaskFrame(); // 创建悬浮窗口 this.suspendWindow = new SuspendWindow(this); // 创建任务栏图标 createTrayIcon(); // 创建工具栏 createToolBar(); createAllMenu(); createTablePopupMenu(); // 得到屏幕大小 Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); // 导航滚动 JScrollPane navPane = new JScrollPane(this.navTree); JScrollPane downloadPane = new JScrollPane(this.downloadTable); int downloadPaneHeight = (int) (screen.height / 1.5); int downloadPaneWidth = (int) (screen.width / 0.9); downloadPane.setPreferredSize(new Dimension(downloadPaneWidth, downloadPaneHeight)); JScrollPane infoPane = new JScrollPane(this.infoJList); // 主 界面右边的分隔Pane JSplitPane rightPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, downloadPane, infoPane); rightPane.setDividerLocation(400); rightPane.setDividerSize(3); // 主界面的分隔 Pane JSplitPane mainPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, navPane, rightPane); mainPane.setDividerSize(3); mainPane.setDividerLocation((int) (screen.width / 10)); this.add(mainPane); this.setPreferredSize(new Dimension(screen.width, screen.height - 30)); this.setVisible(true); this.setTitle(" 赤兔多线程下载工具"); this.pack(); initlisteners(); // 创建定时器 Timer timer = new Timer(1200, refreshTable); timer.start(); // 读取序列化文件 reverseSer(); // 只调整最后一列的宽度JTable.AUTO_RESIZE_LAST_COLUMN downloadTable.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN); // JTable选择模式 downloadTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); // 限 制JTabel的列随意拖动互换 downloadTable.getTableHeader().setReorderingAllowed(false); // JTable的高度和宽 度按照下面的 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 来设定 downloadTable.setRowHeight(23); // 为下载列表添加 弹出式菜单 downloadTable.setComponentPopupMenu(tablePopupMenu); public NewTaskFrame getNewTaskFrame() { return this.taskFrame; } private void createTablePopupMenu() { tablePopupMenu.add(openFileMenu); tablePopupMenu.add(openFolderMenu); tablePopupMenu.addSeparator(); tablePopupMenu.add(startTaskMenu); tablePopupMenu.add(pauseTaskMenu); tablePopupMenu.add(deleteTaskMenu); tablePopupMenu.addSeparator(); tablePopupMenu.add(allStartMenu); 5 } tablePopupMenu.add(allPauseMenu); tablePopupMenu.add(deleteFinishedMenu); openFileMenu.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { try { openfile(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); openFolderMenu.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { try { openfolder(); } catch (IOException e) { e.printStackTrace(); } } }); startTaskMenu.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { start(); } }); pauseTaskMenu.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { pause(); } }); deleteTaskMenu.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { delete(); } }); allStartMenu.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { startAllTask(); } }); allPauseMenu.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { pauseAllTask(); } }); deleteFinishedMenu.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { deleteFinished(); } }); private void createAllMenu() { // 文件菜单项的事件监听器,设置菜单栏快捷键 build.addActionListener(fileItemListener); build.setAccelerator(KeyStroke.getKeyStroke("ctrl B")); star.addActionListener(fileItemListener); star.setAccelerator(KeyStroke.getKeyStroke("ctrl S")); paus.addActionListener(fileItemListener); paus.setAccelerator(KeyStroke.getKeyStroke("ctrl P")); delet.addActionListener(fileItemListener); delet.setAccelerator(KeyStroke.getKeyStroke("ctrl D")); allStart.addActionListener(fileItemListener); allStart.setAccelerator(KeyStroke.getKeyStroke("ctrl A")); allPause.addActionListener(fileItemListener); allPause.setAccelerator(KeyStroke.getKeyStroke("ctrl U")); deleteFinishe.addActionListener(fileItemListener); 6 deleteFinishe.setAccelerator(KeyStroke.getKeyStroke("ctrl W")); exit.addActionListener(fileItemListener); exit.setAccelerator(KeyStroke.getKeyStroke("ctrl E")); build.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { taskFrame.setVisible(true); } }); star.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { start(); } }); paus.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { pause(); } }); delet.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { delete(); } }); allStart.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { startAllTask(); } }); allPause.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { pauseAllTask(); } }); deleteFinishe.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { deleteFinished(); } }); exit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { serializable(); System.exit(0); } }); // 为文件菜单加入所有子项 file.add(build); file.addSeparator(); file.add(star); file.add(paus); file.add(delet); file.addSeparator(); file.add(allStart); file.add(allPause); file.add(deleteFinishe); file.addSeparator(); file.add(exit); // 为“帮助”菜单子项加入 事件监听器 about.addActionListener(helpItemListener); // 为工具菜单加入所有子 项 tool.add(powerboot); tool.addSeparator(); tool.add(shutdown); // 为帮助菜单加 入所有子项 help.add(about); // 为菜单条加入所有菜单 mb.add(file); 7 } mb.add(tool); mb.add(help); // 为窗口设置菜单条 setJMenuBar(mb); /** * 创建任务栏图标 */ private void createTrayIcon() { this.popupMenu.add(openItem); this.popupMenu.add(newItem); this.popupMenu.add(startItem); this.popupMenu.add(pauseItem); this.popupMenu.add(removeItem); this.popupMenu.add(quitItem); try { SystemTray tray = SystemTray.getSystemTray(); this.trayIcon = new TrayIcon(trayIconImage, "赤兔", this.popupMenu); this.trayIcon.setToolTip("赤兔"); tray.add(this.trayIcon); } catch (Exception e) { e.printStackTrace(); } } private void initlisteners() { // 点击列 表鼠标监听器 this.downloadTable.addMouseListener(new MouseAdapter() { @SuppressWarnings("unchecked") public void mouseClicked(MouseEvent e) { // 得到点击的资源 Resource r = getResource(); if (r == null) return; // 设置信息显示区域的值 fileSize.setValue(FILE_SIZE_TEXT + r.getSize() / 1024 + " K"); filePath.setValue(FILE_PATH_TEXT + r.getSaveFile().getAbsolutePath()); downloadDate.setValue(DOWNLOAD_DATE_TEXT + DateUtil.formatDate(r.getDownloadDate())); info.setValue(RESOURCE_INFO_TEXT + r.getState().getState()); // 重新设置 JList数据 infoJList.setListData(infoList.toArray()); } }); // 点击导航树 鼠标监听器 this.navTree.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { selectTree(); } }); // 窗体关闭事件,当窗 体关闭时不终止程序,而是隐藏界面 this.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { setVisible(false); } }); // 任务栏图标监听器 this.trayIcon.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (e.getClickCount() == 2) { setVisible(true); } } }); this.openItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { if (isVisible()) 8 } setVisible(false); else setVisible(true); } }); this.newItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { taskFrame.setVisible(true); } }); this.startItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { startAllTask(); } }); this.pauseItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { pauseAllTask(); } }); this.removeItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { deleteFinished(); } }); this.quitItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { serializable(); System.exit(0); } }); /** */ private void selectTree() { DownloadNode * 点击导航树触发的方法 selectNode = getSelectNode(); this.currentNode = selectNode; refreshTable(); } /** * 刷新列表 */ private void refreshTable() { DownloadTableModel model = (DownloadTableModel) this.downloadTable .getModel(); model.setResources(ContextHolder.ctx.getResources(currentNode)); } private DownloadNode getSelectNode() { TreePath treePath = this.navTree.getSelectionPath(); if (treePath == null) return null; // 获得选中 的TreeNode DefaultMutableTreeNode node = (DefaultMutableTreeNode) treePath .getLastPathComponent(); return (DownloadNode) node.getUserObject(); } private void addTableData() { DownloadTableModel model = (DownloadTableModel) this.downloadTable .getModel(); // 将保存的 资源设置到列表中 model.setResources(ContextHolder.ctx.resources); // 刷新列 表 this.downloadTable.refresh(); } /** 9
本文档为【java仿迅雷多线程下载工具源码】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_511210
暂无简介~
格式:doc
大小:48KB
软件:Word
页数:16
分类:互联网
上传时间:2017-09-01
浏览量:138