JTable调用updateUI()刷新界面问题 写的一个下载工具,其中的 JTable 只要加上计时器调用 updateUI()给他刷新界面,程序就卡的不行,这是什么原因呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 package index.download.table;import java.util.Date;import java.util.List;import index.download.Context;import index.download.Source;import javax.swing.table.*;public class ExtendsAbstractTableModel extends AbstractTableModel{ private static final long serialVersionUID = 1L; private List<Source> sources=Context.downloadContent.sources; public String getColumnName(int column){ String s=null; switch(column){ case 0: s="状态"; break; case 1: s="文件名称"; break; case 2: s="文件大小"; break; case 3: s="进度"; break; case 4: s="下载速度"; break; case 5: s="已下载"; break; case 6: s="已用时间"; break; case 7: s="剩余时间"; break; } return s; } public int getColumnCount(){ return 5; } public int getRowCount(){ return this.sources.size(); } public Object getValueAt(int row,int column){ if(column==0){ if(this.sources.get(row).Finish()) return "已完成"; else return "正在下载"; } if(column==1){ return this.sources.get(row).getFileName(); } if(column==2){ return this.sources.get(row).getFileLength()/1024+"KB"; } if(column==3){ return this.sources.get(row).getProgress(); } if(column==4){ return this.sources.get(row).getSpeed()+"k/s"; } return 21; }}getValueAt()里如果返回简单的字符串,不卡但只要返回函数,他就卡,而且越来越卡。 那要检查你这些函数计算的速度如何了,最好是不要实时计算结果。把返回的数据保存成一个二维数组好了,另外用其它线程负责更新这个二维数组。尽量不要再GUI主线程中做任何计算操作。 正则表达式中加号和问号连在一起是什么意思? 求一正则表达式 哪些是会自动加载的 请教JEditorPane显示大文件的性能问题问题 如何成为一名优秀的软件工程师 急求一正则表达式的做法 88分问个求个简单程序(再线等候) 为什么进度条走不到100%? 这个程序会不会死锁 一道极其诡异的问题 各位过来人给个意见,SE部分看完了,是巩固呢,还是继续EE部分,回头再巩固SE? 控制台输入带空格的数字 怎么把这些数字放到整形数组里
import java.util.List;import index.download.Context;
import index.download.Source;import javax.swing.table.*;public class ExtendsAbstractTableModel extends AbstractTableModel{
private static final long serialVersionUID = 1L;
private List<Source> sources=Context.downloadContent.sources;
public String getColumnName(int column){
String s=null;
switch(column){
case 0:
s="状态";
break;
case 1:
s="文件名称";
break;
case 2:
s="文件大小";
break;
case 3:
s="进度";
break;
case 4:
s="下载速度";
break;
case 5:
s="已下载";
break;
case 6:
s="已用时间";
break;
case 7:
s="剩余时间";
break;
}
return s;
}
public int getColumnCount(){
return 5;
}
public int getRowCount(){
return this.sources.size();
}
public Object getValueAt(int row,int column){
if(column==0){
if(this.sources.get(row).Finish())
return "已完成";
else
return "正在下载";
}
if(column==1){
return this.sources.get(row).getFileName();
}
if(column==2){
return this.sources.get(row).getFileLength()/1024+"KB";
}
if(column==3){
return this.sources.get(row).getProgress();
}
if(column==4){
return this.sources.get(row).getSpeed()+"k/s";
}
return 21;
}
}getValueAt()里如果返回简单的字符串,不卡
但只要返回函数,他就卡,而且越来越卡。