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

📄 leapgettablemodel.java

📁 一个java编写的下载器源码
💻 JAVA
字号:
package com.leapget.view;

import java.awt.Component;
import java.util.ArrayList;

import javax.swing.JProgressBar;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableCellRenderer;

import com.leapget.util.TaskInfo;

class LeapGetTableModel extends AbstractTableModel{

	private static final long serialVersionUID = 200808091600097833L;
	private static final String[] columnNames = { "任务名称", "任务大小", "即时速度", "耗时", "下载进度", "线程数", "状态" };// 定义表头
	private static final Class<?>[] columnClasses = { String.class, String.class, String.class, String.class, JProgressBar.class, Integer.class, String.class };// 定义列类型
	private ArrayList<TaskInfo> taskList = new ArrayList<TaskInfo>(); // 定义下载任务列表

	public void addTask(TaskInfo task) {
		taskList.add(task);
		fireTableRowsInserted(getRowCount() - 1, getRowCount() - 1); // 释放单元行
	}
	public void delTask(TaskInfo task) {
		int row = getRowCount();
		taskList.remove(task);
		fireTableRowsDeleted(row, row); // 释放单元行
	}
	// 获得下载任务
	public TaskInfo getTask(int row) { 
		return taskList.get(row);
	}
	// 清除下载任务
	public void clearSubTaskThread(int row) { 
		taskList.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 taskList.size();
	}
	// 查找指定方格的对象
	public Object getValueAt(int row, int col) { 
		TaskInfo task = taskList.get(row);
		switch (col) {
			case 0: // 网络地址
				return task.getFileUrl();
			case 1: // 大小
				return task.getSize();
			case 2: // 速度
				//if(columnNames[col].equals("平均速度"))
				//	return task.getAvgSpeed();
				//else
					return task.getCurrentSpeed();
			case 3: // 耗时
				return task.getStrCostTime();
			case 4: // 进度
				return task.getProgress();
			case 5: // 线程数目
				return task.getThreadCount();
			case 6: // 状态
				return task.getStrState();
		}
		return null;
	}
	public void setAllRowsSelected(){
		
	}
	// 返回是否所有任务都已经暂停
	public boolean isAllTaskPaused(){
		for(TaskInfo task : taskList){
			if(task.getState() == TaskInfo.TASK_PAUSED)
				return false;
		}
		return taskList.size()>0?true:false;// 如果任务数为0,返回false
	}
	// 数据已经更新,更新界面
	public void updateTask(TaskInfo task){
		int index = taskList.indexOf(task);
		fireTableRowsUpdated(index, index); 
	}
	public void updateTitle(int col, String colName){
		columnNames[col] = colName;
		fireTableStructureChanged();
	}
}

class ProgressRenderer extends JProgressBar implements TableCellRenderer {
	private static final long serialVersionUID = 2008080916031360534L;

	public ProgressRenderer(int min, int max) {
		super(min, max);
	}

	public Component getTableCellRendererComponent(JTable table, Object value,
			boolean isSelected, boolean hasFocus, int row, int column) {
		setValue(((Integer)value).intValue());
		return this;
	}
}

⌨️ 快捷键说明

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