mainframe.java

来自「一款JAVA开发的类迅雷的多线程下载系统,希望对大家有帮助」· Java 代码 · 共 1,626 行 · 第 1/5 页

JAVA
1,626
字号
package downfile;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JProgressBar;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.JToolBar;
import javax.swing.JTree;
import javax.swing.ListSelectionModel;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeSelectionModel;

//import snoozesoft.systray4j.*;


public class MainFrame extends JFrame implements TreeSelectionListener//,SysTrayMenuListener
{
	
	    JMenuBar topmenubar = new JMenuBar();   //顶部菜单
	    JMenu filemenu = new JMenu("文件(F)");
	    JMenu setupmenu = new JMenu("常用设置(S)");
	    JMenu helpmenu = new JMenu("帮助(H)");
	    JMenuItem newmenuitem = new JMenuItem("新建任务(N)");
	    JMenuItem startmenuitem = new JMenuItem("开始");
	    JMenuItem stopmenuitem = new JMenuItem("暂停");
	    JMenuItem detmenuitem = new JMenuItem("删除");
	    JMenuItem openmenuitem = new JMenuItem("打开");
	    JMenuItem openmenumenuitem = new JMenuItem("打开目录");
	    JMenuItem closemenuitem = new JMenuItem("退出程序(E)");
	    JMenuItem setupmenuitem = new JMenuItem("常用设置(C)");
	    JCheckBoxMenuItem guanjimenuitem = new JCheckBoxMenuItem("智能关机");
	    JCheckBoxMenuItem xinximenuitem = new JCheckBoxMenuItem("信息窗口");
	    JCheckBoxMenuItem spemenuitem = new JCheckBoxMenuItem("悬浮窗口");
	    JMenuItem helpmenuitem = new JMenuItem("帮助信息");
	    JMenuItem aboutmenuitem = new JMenuItem("关于本人");
	    
	    //树弹出菜单
	    JPopupMenu treepopup = new JPopupMenu();
	    JMenuItem newleibie= new JMenuItem("新建类别");
	    JMenuItem openleimenu = new JMenuItem("打开类目录");
	    JMenuItem detleibie = new JMenuItem("删除");
	    JMenuItem qingkong = new JMenuItem("清空垃圾箱");
	    JMenuItem shuxing = new JMenuItem("属性");
	    
	    //table弹出菜单
	    JPopupMenu tablepopup = new JPopupMenu();
	    JMenuItem startmenu = new JMenuItem("任务开始");
	    JMenuItem stopmenu = new JMenuItem("任务暂停");
	    JMenuItem openmenu = new JMenuItem("打开文件");
	    JMenuItem openmenumenu = new JMenuItem("打开目录");
	    JMenuItem redownmenu = new JMenuItem("重新下载");
	    JMenuItem detmenu = new JMenuItem("删除文件");
	    
	    //顶部按钮
	    JToolBar toolbar;
	    JButton newbutton = new JButton();    //新建下载任务按钮
	    JButton startbutton = new JButton();  //开始下载任务的按钮
	    JButton stopbutton = new JButton();   //暂停下载任务的按钮
	    JButton setupbutton = new JButton();  //打开设置界面的按钮
	    JButton openbutton = new JButton();   //打开当前选中的文件
	    JButton detbutton = new JButton();    //删除当前选中的文件
	    JButton openmenubutton = new JButton();   //打开当前选中的文件所在的目录
	    JButton guanjibutton = new JButton();   //当所有的下载完成后自动关机
	    JButton helpbutton = new JButton();   //帮助按钮
	    
	    //底部按钮
	    JButton Spebutton = new JButton();  //是否显示悬浮窗
	    JButton infobutton = new JButton(); //是否显示文件信息
	    JButton button1 = new JButton();  //功能待加
	    JButton button2 = new JButton();   //功能待加
	    JButton button3 = new JButton();   //功能待加
	    
	    //下载状态图标
	    ImageIcon downed = new ImageIcon(getImage("images/downed.png"));
	    ImageIcon downing = new ImageIcon(getImage("images/start.png"));
   	    ImageIcon pause = new ImageIcon(getImage("images/pause.png"));
   	    ImageIcon detpic = new ImageIcon(getImage("images/errer.png"));
   	    ImageIcon xinad = new ImageIcon(getImage("images/xinad.jpg"));
   	    
        //加载按钮上的图标
	    ImageIcon startpic = new ImageIcon(getImage("images/start.png"));
	    ImageIcon stoppic = new ImageIcon(getImage("images/stop.png"));
	    ImageIcon setuppic = new ImageIcon(getImage("images/setup.png"));
	    ImageIcon openpic = new ImageIcon(getImage("images/open.png"));
	    ImageIcon openmenupic = new ImageIcon(getImage("images/openmenu.png"));
	    ImageIcon guanjipic = new ImageIcon(getImage("images/guanji.png"));
	    ImageIcon helppic = new ImageIcon(getImage("images/help.png"));
	    ImageIcon newpic = new ImageIcon(getImage("images/new.png"));
	    ImageIcon spepic = new ImageIcon(getImage("images/lock.png"));
	    ImageIcon infopic = new ImageIcon(getImage("images/info.png"));
	    
	    ImageIcon button1pic = new ImageIcon(getImage("images/column.png"));
	    ImageIcon button2pic = new ImageIcon(getImage("images/bottom.png"));
	    ImageIcon button3pic = new ImageIcon(getImage("images/sousuo.png"));
	    
	    //托盘菜单
//	    static  String toolTips = "java下载器";    
//	    static SysTrayMenuIcon icons = new SysTrayMenuIcon("images/main.ico");
//	    static SysTrayMenu menu = new SysTrayMenu(icons,toolTips);
	   
	    
        static JLabel yunxingtime = new JLabel("程序已运行:");
	    static JLabel renwushulb = new JLabel("正在运行的任务数:");
	    static JLabel shuominglb = new JLabel();   //底部按钮说明标签
	  	    
	    static JTree tree;
	    JScrollPane jsptree;
	    static String nodeName = null;
	    static DefaultTreeModel treeModel = null;
	    TreeModel  root = new TreeModel("java下载器任务管理");
	    static TreeModel node1 = new TreeModel("正在下载",false);
	    static TreeModel node2 = node2 = new TreeModel("已经下载");
	    static TreeModel node3 = node3 = new TreeModel("垃圾箱",false);
	    static TreeModel selectionNode = null;   //当前被选中的类别
	    static ArrayList leadNodeList = new ArrayList();    //类别List
	    static ArrayList alldownloadList = new ArrayList();
	    
	    static DownloadsTableModel tablemodel;
	    static JTable table;  
	    DownloadsTableModel tablemodel1 = null;      //正在下载JTable模式
	    DownloadsTableModel dettablemodel = null;    //垃圾箱JTable模式
	    JScrollPane scrollpane;
	    Download selectedDownload;   //JTable中当前被选中对应的DOWNLOAD对象
	    boolean clearing = false;
	    
	    JSplitPane jsp = new JSplitPane();   
	    JSplitPane tablejsp = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
	    JTabbedPane tabbedpane = new JTabbedPane(JTabbedPane.BOTTOM);
	    
	    JComboBox sousuojcb = new JComboBox();      //搜索网站选择
	    JTextField sousuojtf = new JTextField(20);  //搜索内容
	    JButton sousuojbn = new JButton("搜索");    //搜索按钮
	    
	    boolean read = true;
	    static MainFrame main; 
	    HelpDialog help = new HelpDialog(main,"帮助");  //帮助对话框
	    static AboutDialog about = new AboutDialog(main,"关于本人");  //关于对话框
	    XinJianDialog xinjian;  //新建下载任务窗口
	    XinJianLeiBieDialog xinjianleibie;   //新建类别窗口
	    ShuXingDialog shuxingdialog;   //类别属性窗口
	    SetUpDialog setup = new SetUpDialog(main,"设置");   //设置窗口
	    
//	    ShutDown shutdown;    //智能关机
	    
        public MainFrame(){
        	super("java下载器");
        	       	    
       	    //设置程序图标
       	    Image iconmain = getImage("images/main.jpg");
    	    setIconImage(iconmain);
        	
    	    //文件项目添加
    	    buildMenu();
    	    setJMenuBar(topmenubar);
    	    
    	    JPanel panel = new JPanel();
    	    panel.setLayout(new BorderLayout());
    	    
    	    JPanel northpanel = new JPanel();
    	    northpanel.setLayout(new BorderLayout());
    	    panel.add(northpanel,BorderLayout.NORTH);
    	    
    	    //顶部工具栏初始化
    	    toolbar = new JToolBar();
    	    toolbar.setFloatable(false);
    	    
    	    toolbar.add(newbutton);
    	    toolbar.addSeparator(new Dimension(15,0)); 
    	    toolbar.add(startbutton);
    	    toolbar.addSeparator(new Dimension(15,0));   	    
    	    toolbar.add(stopbutton);
    	    toolbar.addSeparator(new Dimension(15,0));
    	    toolbar.add(setupbutton);
    	    toolbar.addSeparator(new Dimension(15,0));
    	    toolbar.add(openbutton);
    	    toolbar.addSeparator(new Dimension(15,0));
    	    toolbar.add(detbutton);
    	    toolbar.addSeparator(new Dimension(15,0));
    	    toolbar.add(openmenubutton);
    	    toolbar.addSeparator(new Dimension(15,0));
    	    toolbar.add(guanjibutton);
    	    toolbar.addSeparator(new Dimension(15,0));
    	    toolbar.add(helpbutton);
    	        	        	    
    	    //搜索栏面板
    	    JPanel sousuopanel = new JPanel();
    	    sousuopanel.setLayout(new FlowLayout(FlowLayout.CENTER));
    	    sousuopanel.add(sousuojtf);
            sousuopanel.add(sousuojcb);
    	    sousuopanel.add(sousuojbn);    	    
    	    
    	    //工具栏和搜索面板所在的面板
    	    JPanel buttonpanel = new JPanel();
    	    buttonpanel.setLayout(new BorderLayout());
    	    northpanel.add(buttonpanel,BorderLayout.CENTER);
    	    buttonpanel.add(toolbar,BorderLayout.WEST);
    	    buttonpanel.add(sousuopanel,BorderLayout.EAST);
    	    
    	    //顶部广告栏
    	    JScrollPane adpanelScrollPane = new JScrollPane();
    	    JEditorPane adpanel = new JEditorPane();
    	    adpanel.setEditable(false);
    	    adpanel.setLayout(new BorderLayout());
    	    
    	    adpanelScrollPane.getViewport().add(adpanel);
    	    northpanel.add(adpanelScrollPane,BorderLayout.NORTH);
    	    	   
    	    URLClassLoader urlLoader1 = (URLClassLoader)this.getClass().getClassLoader();
    	    URL url1 = null;
    	    url1 = urlLoader1.findResource("doc/ad.htm");
    	    try {
    			adpanel.setPage(url1);
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		adpanel.addHyperlinkListener(new HyperlinkListener(){
				public void hyperlinkUpdate(HyperlinkEvent arg0) {
				  
				}	
    		});
    	    
    		//中间显示JTREE和JTABLE的面板
    	    JPanel centerpanel = new JPanel();
    	    centerpanel.setLayout(new BorderLayout());
    	    panel.add(centerpanel,BorderLayout.CENTER);
    	    
    	    //底部面板  添加底部工具栏和JLABEL
    	    JPanel bottompanel = new JPanel();
    	    bottompanel.setLayout(new FlowLayout(FlowLayout.LEFT));
    	    panel.add(bottompanel,BorderLayout.SOUTH);
            
    	    //底部工具栏
    	    JToolBar bottomtoolbar = new JToolBar();
    	    bottomtoolbar.setFloatable(false);
    	    
    	    bottomtoolbar.add(Spebutton);         
    	    bottomtoolbar.add(infobutton);
    	    bottomtoolbar.add(button1);
    	    bottomtoolbar.add(button2);
    	    bottomtoolbar.add(button3);
    	    bottomtoolbar.add(shuominglb);
    	    bottomtoolbar.addSeparator(new Dimension(150,0));
    	    bottomtoolbar.add(yunxingtime);
    	    bottomtoolbar.addSeparator(new Dimension(50,0));
    	    bottomtoolbar.add(renwushulb);  
    	    
    	    bottompanel.add(bottomtoolbar);
    	        	    
    	    //表格信息
    	    readNode1();
    	    buildTable();
    	    
    	    //树型结构的实现
            buildTree();
    	    
    	    //为树添加弹出菜单
            buildTreepopup();
    	    
    	    //为table添加弹出菜单
            buildTablepopup();

    	    
    	    //搜索下拉列表
    	    sousuojcb.addItem("迅雷");
    	    sousuojcb.addItem("google");
    	    sousuojcb.addItem("yahoo");
    	    sousuojcb.addItem("一搜");
    	    sousuojcb.addItem("百度");

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?