⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xunlei.java

📁 仿迅雷下载器,http下载,多线程.多任务
💻 JAVA
字号:

package cn.xl;
import java.awt.Color;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTable;
import javax.swing.UIManager;


/**
 * 顶层容器,继承自JFrame.
 * 
 */

public class xunlei extends JFrame 
{
	private JPanel jPanel1 = new JPanel();
	private static final long serialVersionUID = 2291521166551729185L;
	
	
	/**
	 * 私有构造子.初始化容器,和程序运行时需要用到的部分集合类.
	 *
	 */
	private xunlei()
    {
        try
        {   //本地外观.
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        }
        catch (Exception ex)
        {
            ex.printStackTrace();
        }
       
        //保存下载线程锁的集合类,
		List<Object> list=Collections.synchronizedList(new ArrayList<Object>());
		//保存计时线程锁的集合类.
		List<Object> timeList=Collections.synchronizedList(new ArrayList<Object>());
		//即时速度计算.
		List<Object> speed_List=Collections.synchronizedList(new ArrayList<Object>());
		
		SaveRunTime.setLIST(list);
		SaveRunTime.setTIMELIST(timeList);
		SaveRunTime.setSPEED_LIST(speed_List);
		
		//得到或得不到链接时,对下载文件信息的保存.
		List<HashMap<String, String>> testHashMap=Collections.synchronizedList(new ArrayList<HashMap<String, String>>());
		SaveRunTime.setSAVE_HASHMAP(testHashMap);
		
		
		//新任务JDialog初始化,隐藏.
		NewTaskDialog newTask=new NewTaskDialog(this);
		
		//newTask Dialog的初始化
		newTask.initComponents();
		//保存此JDialog
		SaveRunTime.setNEWTASK(newTask);
		
		//顶层容器初始化.
        initComponents();  
    }
	
	
	/**
	 * 顶层容器的初始化方法.所有的组件都在这里被添加.
	 *
	 */
    private void initComponents()
    {
        //没有布局.
        getContentPane().setLayout(null);
        //位置
        setBounds(50, 0, 777, 523);
      
        //关闭窗口事件,退出程序之前,写xml.
        addWindowListener(new WindowAdapter()
		{
			public void windowClosing(WindowEvent e) 
			{
				try
				{
					new XmlOperation().writerTaskInfo();//退出程序之前,写入xml
				} catch (Exception ex)
				{
				}
				System.exit(1);
			}
		});
        
       
        //jPanel1没有布局管理器.
        jPanel1.setLayout(null);
        jPanel1.setBackground(new java.awt.Color(226, 238, 249));
        jPanel1.setFocusable(false);
        jPanel1.setBounds(0, 0, 769, 440);
  
        
        
        //加载滚动分隔符,分隔符的两边分别是文件下载进度显示表,文件信息表
        JSplitPane jsp=this.getJSp();
        XDownTable xd= new XDownTable();
        
        JTable taskEndTable=xd.taskComplete();
        //构造一张空的表,样式与正在使用的表相同,用于显示已经完成的任务.
        SaveRunTime.setTASKEND_TABLE(taskEndTable);
        JScrollPane jsced=xd.getJScrollPane(taskEndTable);
       
        //上面下载用表.必须重新构造一个.
        JScrollPane jscing= xd.getJScrollPane(xd.xDownTable());
        SaveRunTime.setJSC_ING(jscing);//保存正在下载用表;
        //保存已经下载用表.程序最初并没有加载已下载信息表.
        SaveRunTime.setJSC_ED(jsced);
        SaveRunTime.setJSP(jsp);//存滚动条组件.
        
        //上面下载表.
        jsp.setLeftComponent(jscing);
        //下面信息表.不需要构造两张.
		jsp.setRightComponent(new XDownInfoTable().getDownInfo());
		
		//添加组件.
		add(jsp);
        
		
		
        //加载JMenuBar;
        setJMenuBar(new XJMenuBar().xJMenuBar());
        
        
        //加载按钮区.
        new XJButton().xJButton(jPanel1);
        
        
        //加载底部Panel及jPanel1的几张固定图片
        getContentPane().add(new XJLable().xJLable(jPanel1));
        
        //加载左边树.
        new XLeftTree().xLeftTree(jPanel1);
        
        //加载顶部jPanel
        getContentPane().add(jPanel1);
        
        //设置为不能调整大小.
        setResizable(false);
       
    }
   
  
    /**
     * 返回一个JSplitPane
     * @return
     */
    public JSplitPane getJSp()
    {
    	JSplitPane jsp=new JSplitPane();
       //上边组件的可见高度.
		jsp.setDividerLocation(200);
		jsp.setDividerSize(6);//滚动条的宽度.滚动条的颜色没有办法改变.
		jsp.setOrientation(JSplitPane.VERTICAL_SPLIT);
		jsp.setBounds(110, 114, 660, 326);
		//有下边框.
		jsp.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0,Color.gray));
        return jsp;
    }
    
    
   
    public static void main(String args[])
    {
    		xunlei xl=new xunlei();
    		xl.setVisible(true);
    	
    		//顶层容器.
    		SaveRunTime.setXL(xl);
    		
    		//计算即时速度.
    		new Thread(new DownLoad().new CounterSpeed()).start();
    }
}





























⌨️ 快捷键说明

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