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

📄 downloadstablemodel.java

📁 一款JAVA开发的类迅雷的多线程下载系统,希望对大家有帮助
💻 JAVA
字号:
package downfile;

import java.util.ArrayList;
import java.util.Observable;
import java.util.Observer;

import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JProgressBar;
import javax.swing.table.AbstractTableModel;

public class DownloadsTableModel extends AbstractTableModel
implements Observer
{ 
    private static final String[] columnNames1 = {" ","文件名称","大小","速度","下载进度","块数","已经用时",
    	"剩余时间"};
    
    private static final String[] columnNames2 = {" ","文件名称","大小","注释","任务创建日期","任务完成日期","下载用时"};
    
    private static final Class[] columnClasses1 = {ImageIcon.class,JLabel.class,String.class,
    	String.class,JProgressBar.class,String.class,String.class,String.class,String.class};
    
    private static final Class[] columnClasses2 = {ImageIcon.class,JLabel.class,String.class,
    	String.class,String.class,String.class,String.class};
    
    ArrayList downloadingList = new ArrayList();   //正在下载
    ArrayList downloadedList = new ArrayList();     //已经下载完
    
    TreeModel m_treemodel = null;
    
    int model = -1;
    public DownloadsTableModel(TreeModel treemodel){   	
    	m_treemodel = treemodel;
    	downloadedList = m_treemodel.downloadList;
    }
    
    public DownloadsTableModel(int i){
    	model = i; 	
    	m_treemodel = MainFrame.node2;
    	for(int j=0;j<MainFrame.node1.downloadList.size();j++){
    		Download download = (Download) MainFrame.node1.downloadList.get(j);
    		addDownload(download);
    		System.out.println(downloadingList.size());
    	}
    }

    public void addDownload(Download download){
    	download.addObserver(this);
    	downloadingList.add(download);
    	fireTableRowsInserted(getRowCount() - 1,getRowCount() - 1);
    }
    
    public void setTreeModel(TreeModel treemodel){
    	if(treemodel == null){
    		m_treemodel = MainFrame.node2;
    		downloadedList = m_treemodel.downloadList;
    	}else {
    	   m_treemodel = treemodel;
    	   downloadedList = m_treemodel.downloadList;
    	}
    }
    
    public Download getDownload(int row){
    	if(model == 0){
          return (Download) downloadingList.get(row);  
    	}else
    	  return (Download)downloadedList.get(row);   		
    }
    
    public void clearDownload(int row){    
    	if(model == 0){
    	   Download download = (Download)downloadingList.get(row);
    	   if(download.status == Download.DOWNLOADING)
    	       download.cancel();
    	   MainFrame.node3.downloadList.add(download);
    	   download.deleteObserver(this);
           downloadingList.remove(row);	
    	}
    	else if(m_treemodel.equals(MainFrame.node3)){
    	       Download download = (Download)downloadedList.get(row);
    	       downloadedList.remove(row);
    	       MainFrame.node3.downloadList = downloadedList;
    	}else{
    	       Download download = (Download)downloadedList.get(row);
    	       MainFrame.node3.downloadList.add(download);
    		   downloadedList.remove(row);
    		}
    	}
    
	public int getColumnCount(){ 
		if(model == 0)
		return columnNames1.length;
		else return columnNames2.length;
	}
    
	public String getColumnName(int col){
		if(model == 0)
		return columnNames1[col];
		else return columnNames2[col];
	}
	
	public Class getColumnClass(int col){
		if(model == 0)
		return columnClasses1[col];
		else return columnClasses2[col];
	}
	
	public int getRowCount(){
		if(model == 0)
		return downloadingList.size();
		else return downloadedList.size();
	}
	
	public ArrayList getArrayList(){
		if(model == 0&&m_treemodel.equals(MainFrame.node1))
		return downloadingList;
		else
		return downloadedList;
	}
	
	public Object getValueAt(int row, int col) {
		if(model == 0){
		if(downloadingList.isEmpty()||row >= downloadingList.size()){
		}
		else{
		Download download = (Download) downloadingList.get(row);
		removeDownload(download);
		m_treemodel.downloadList = getArrayList();
		switch(col){
		case 0:
			return MainFrame.main.getImageIcon(download.getStatus());
		case 1:
			return download;
		case 2:
		  long size = download.getSize();
		  if(size >= 1024*1024)
		  return (float)size/(1024*1024)+"M";
		  else if(size >= 1024&&size<1024*1024){
			  return (float)size/1024+"K";
		  }else {
			  return (float)size+"B";
		  }
		case 3:
		  return (float)download.getSpeed()/1024+"KB/s";
		case 4:
			return new Float(download.getProgress());
		case 5:
			return SetUpDialog.kuaishu;
		case 6:
			return download.getTimed();
		case 7:
			return download.getTime();
		}
		}
		}else{
			  Download downloaded = (Download) downloadedList.get(row);
			switch(col){
			case 0:
				return MainFrame.main.getImageIcon(downloaded.getStatus());
			case 1:
				return downloaded;
			case 2:
				long size = downloaded.getSize();
				  if(size >= 1024*1024)
				  return (float)size/(1024*1024)+"M";
				  else if(size >= 1024&&size<1024*1024){
					  return (float)size/1024+"K";
				  }else {
					  return (float)size+"B";
				  }
			case 3:
				return downloaded.getUrl();
			case 4:
				return downloaded.getDate();
			case 5:
				return downloaded.getDated();
			case 6:
				return downloaded.getTimed();
			}
		}
		return null;
	}
	
	public ArrayList removeDownload(Download download){
		if(download.getStatus() == Download.COMPLETE){
			downloadingList.remove(download);
			downloadedList.add(download);
			fireTableDataChanged();
		}
		return downloadedList;
	}
	
	public void update(Observable o, Object arg) {
		int index=0;
		if(model == 0){
		index = downloadingList.indexOf(o);
		}else{
			index = downloadedList.indexOf(o);
		}
		fireTableRowsUpdated(index,index);
	}
}

⌨️ 快捷键说明

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