Swingworker是一个方便使用线程的工具类,提供了多线程程序的代码框架,基于此包可以方便的写出安全的多线程程序...
Swingworker主要有一下几个方法:
doInBackgrount() 计算返回结果,或者抛出一个异常...此方法是未业务逻辑准备数据的地方
publish(V... chunks) 参数为一个数组,功能是将此数组数据传递到process()方法进行处理,比如可以在doInBackgrount方法中从DB取数据,然后通过publish方法分批将数据传递到process将数据显示到JTable上...
process(List) 方法是处理数据的地方,即传递的数据该如何进行不处理或显示..
setProgress(int) 设置线程外部的JProgress控件值...
基本上通过以上几个方法就可以进行安全的多线程编程了..
例子:
需求:将数据从数据库中取出,然后方法JTable上..
实现:
class LoadDataTask extends SwingWorker<List<LinkerManVO>, LinkerManVO> {
private String strQueryName;
private long startTime = 0L;
@Override
protected List<LinkerManVO> doInBackground() throws Exception {
// showBusyFrame();
startTime = System.currentTimeMillis();
GlobalValue.progressBar.setIndeterminate(true);
List<LinkerManVO> result = null;
result = getAllLinker(strQueryName);
for(int i=0;i<result.size();i++) {
Thread.sleep(00);
publish(new LinkerManVO[] {result.get(i)}); //将结果推到将界面显示...
}
return result;
}
public LoadDataTask(String strQueryName) {
this.strQueryName = strQueryName;
}
@Override
protected void process(List<LinkerManVO> chunks) {
LinkManTableModel model = (LinkManTableModel) detailTable.getModel();
if(chunks != null) {
for(int i=0;i<chunks.size();i++) {
model.addRow(chunks.get(i));
}
}
long dt = System.currentTimeMillis() - startTime;
GlobalValue.stateLabel.setText("耗时: " + dt);
}
@Override
protected void done() {
GlobalValue.stateLabel.setText("查询完毕..");
GlobalValue.progressBar.setIndeterminate(false);
}
}
Swing组件部分的代码就贴出来了,需要的可以回帖...
分享到:
相关推荐
swing swingworker wingworker wingworker
Swing线程的深入理解和SwingWorker基础知识介绍[参照].pdf
NULL 博文链接:https://vearn.iteye.com/blog/344591
Swing线程的深入理解和SwingWorker基础知识介绍
Swt一般情况不允许在另外一个线程中更新控件内容,此程序使用java swing的SwingWorker对swt的控件进行操作更新。对于喜欢使用SwingWorker更新Swing控件的人来说,也可以使用SwingWorker更新Swt控件
主要介绍了在Java的Swing编程中使用SwingWorker线程模式及顶层容器的方法,适用于客户端图形化界面软件的开发,需要的朋友可以参考下
作业:完善swingworker排序功能
第二篇文章《使用Swing Worker线程》,演示了如何使用SwingWorker线程工具类。它也可以在存档中找到。 本文介绍了修订过的SwingWorker类,并演示了和基于模型的组件(model-based components)如JTable和JTree同时...
SwingWorker的替代品,用于在Swing中执行异步任务。 我们将SwingWorker.java与Action接口合并,生成AbstractAsynchronousAction.java。 此类的具体扩展可以用来代替任何Action。
NULL 博文链接:https://chenhailong.iteye.com/blog/1312202
第二篇文章《使用SwingWorker线程》,演示了如何使用SwingWorker线程工具类。它也可以在存档中找到。本文介绍了修订过的SwingWorker类,并演示了和基于模型的组件(model-basedcomponents)如JTable和JTree同时使
要通过修改代码来使用AnalysisWorker ,看到里面的代码注释SimpleApp的上单击处理程序analyzeButton 。 您只需要注释掉try-catch块并取消注释工作代码即可。 此外,该解决方案还需要: 处理从工作程序内部抛出的...
第二篇文章《使用SwingWorker线程》,演示了如何使用SwingWorker线程工具类。它也可以在存档中找到。本文介绍了修订过的SwingWorker类,并演示了和基于模型的组件(model-basedcomponents)如JTable和JTree同时使
Exceptionin thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/jdesktop/swingworker/SwingWorker at com.android.draw9patch.Application$1.run(Application.java:48) at java.awt.event....
运用javax.swingworker类生成DynamicJButton示例
不确定某个程序运行多久,用进度条来监测,如果进度条监测到运行结果结束了,就退出进度条,否则以一种不确定的状态等待。
Swing MVC 观察者 系统托盘 SwingWorker 电子相册
Future的实现类有java.util.concurrent.FutureTask即 javax.swing.SwingWorker,V>。通常使用FutureTask来处理我们的任务。FutureTask类同时又 实现了Runnable接口,所以可以直接提交给Executor执行。使用FutureTask...
"课程名称:互联网程序设计 "年级: "实验日期: " "姓名: "学号: "班级: " "实验名称:实验六 TCP文件传输/端 "教师评语(成绩): " "口扫描器(2学时) " " 一、实验目的及要求 (1)理解掌握SwingWorker类的...
使用JProgressBar和SwingWorker做的Java进度条 简单方便 效果看这里:http://blog.csdn.net/kakashi8841/archive/2011/05/03/6388797.aspx