`

Swingworker的使用

    博客分类:
  • Java
阅读更多
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组件部分的代码就贴出来了,需要的可以回帖...
分享到:
评论
1 楼 及缘南烗 2010-03-15  
回帖支持

相关推荐

    Swingworker

    swing swingworker wingworker wingworker

    Swing线程的深入理解和SwingWorker基础知识介绍[参照].pdf

    Swing线程的深入理解和SwingWorker基础知识介绍[参照].pdf

    使用SwingWorker异步加载JTree

    NULL 博文链接:https://vearn.iteye.com/blog/344591

    Swing线程的深入理解和SwingWorker基础知识介绍

    Swing线程的深入理解和SwingWorker基础知识介绍

    SWT与SwingWorker的结合

    Swt一般情况不允许在另外一个线程中更新控件内容,此程序使用java swing的SwingWorker对swt的控件进行操作更新。对于喜欢使用SwingWorker更新Swing控件的人来说,也可以使用SwingWorker更新Swt控件

    Java的Swing编程中使用SwingWorker线程模式及顶层容器

    主要介绍了在Java的Swing编程中使用SwingWorker线程模式及顶层容器的方法,适用于客户端图形化界面软件的开发,需要的朋友可以参考下

    swingworker排序

    作业:完善swingworker排序功能

    Swing线程的最后讨论 -- 利用异步模型

    第二篇文章《使用Swing Worker线程》,演示了如何使用SwingWorker线程工具类。它也可以在存档中找到。 本文介绍了修订过的SwingWorker类,并演示了和基于模型的组件(model-based components)如JTable和JTree同时...

    An Alternative to SwingWorker.java-开源

    SwingWorker的替代品,用于在Swing中执行异步任务。 我们将SwingWorker.java与Action接口合并,生成AbstractAsynchronousAction.java。 此类的具体扩展可以用来代替任何Action。

    ProcessBar 2种经典实现

    NULL 博文链接:https://chenhailong.iteye.com/blog/1312202

    Swing线程的最后讨论--利用异步模型

    第二篇文章《使用SwingWorker线程》,演示了如何使用SwingWorker线程工具类。它也可以在存档中找到。本文介绍了修订过的SwingWorker类,并演示了和基于模型的组件(model-basedcomponents)如JTable和JTree同时使

    swing-worker-troubleshooting:回购以解决SwingWorker的问题

    要通过修改代码来使用AnalysisWorker ,看到里面的代码注释SimpleApp的上单击处理程序analyzeButton 。 您只需要注释掉try-catch块并取消注释工作代码即可。 此外,该解决方案还需要: 处理从工作程序内部抛出的...

    开发J2EE应用的要领

    第二篇文章《使用SwingWorker线程》,演示了如何使用SwingWorker线程工具类。它也可以在存档中找到。本文介绍了修订过的SwingWorker类,并演示了和基于模型的组件(model-basedcomponents)如JTable和JTree同时使

    swing-worker-1.1.jar

    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....

    java动态按钮

    运用javax.swingworker类生成DynamicJButton示例

    swing不确定进度条

    不确定某个程序运行多久,用进度条来监测,如果进度条监测到运行结果结束了,就退出进度条,否则以一种不确定的状态等待。

    Swing MVC 观察者 电子相册

    Swing MVC 观察者 系统托盘 SwingWorker 电子相册

    线程超时死掉

    Future的实现类有java.util.concurrent.FutureTask即 javax.swing.SwingWorker,V&gt;。通常使用FutureTask来处理我们的任务。FutureTask类同时又 实现了Runnable接口,所以可以直接提交给Executor执行。使用FutureTask...

    互联网程序设计实验六.doc

    "课程名称:互联网程序设计 "年级: "实验日期: " "姓名: "学号: "班级: " "实验名称:实验六 TCP文件传输/端 "教师评语(成绩): " "口扫描器(2学时) " " 一、实验目的及要求 (1)理解掌握SwingWorker类的...

    Java快速实现的进度条

    使用JProgressBar和SwingWorker做的Java进度条 简单方便 效果看这里:http://blog.csdn.net/kakashi8841/archive/2011/05/03/6388797.aspx

Global site tag (gtag.js) - Google Analytics