downloadstablemodel.java

来自「HTTP单线程下载实例」· Java 代码 · 共 61 行

JAVA
61
字号
import java.util.*;   
import javax.swing.*;   
import javax.swing.table.*;

class DownloadsTableModel extends AbstractTableModel implements Observer {   
	private static final String[] columnNames = {"下载地址", "大小", "进度", "状态"};    
	private static final Class[] columnClasses = {String.class, String.class, JProgressBar.class, String.class};   
	private ArrayList downloadList =  new ArrayList();   
		
 	public void addDownload(Download download) {   
		download.addObserver(this);
		downloadList.add(download);
		fireTableRowsInserted(getRowCount() - 1, getRowCount() - 1);   
	}   
	
	public Download getDownload(int row) {   
		return (Download) downloadList.get(row);   
	}   

	public void clearDownload(int row) {   
		downloadList.remove(row);
		fireTableRowsDeleted(row, row);   
	}   

	public int getColumnCount() {   
		return columnNames.length;   
	}   
	
	public String getColumnName(int col) {   
		return columnNames[col];   
	}   
	
	public Class getColumnClass(int col) {   
		return columnClasses[col];   
	}   
	
	public int getRowCount() {   
		return downloadList.size();   
	}
	
	public Object getValueAt(int row, int col) {   
		Download download = (Download) downloadList.get(row);   
		switch (col) {   
	  		case 0:   // 地址   
	      		return download.getUrl();   
	  		case 1:   // 文件大小  
	      		int size = download.getSize();   
	      		return (size == -1) ? "" : Integer.toString(size);   
	  		case 2:   // 进度条  
	      		return new Float(download.getProgress());   
	  		case 3:   // 状态栏
	      		return Download.STATUSES[download.getStatus()];   
		}   
		return "";   
	}   

	public void update(Observable o, Object arg) {   
		int index = downloadList.indexOf(o);   
		fireTableRowsUpdated(index, index);   
	}   
}

⌨️ 快捷键说明

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