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