📄 leapgettablemodel.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 + -