Swingworker的使用

阅读更多
Swingworker是一个方便使用线程的工具类,提供了多线程程序的代码框架,基于此包可以方便的写出安全的多线程程序...

Swingworker主要有一下几个方法:

doInBackgrount() 计算返回结果,或者抛出一个异常...此方法是未业务逻辑准备数据的地方
publish(V... chunks) 参数为一个数组,功能是将此数组数据传递到process()方法进行处理,比如可以在doInBackgrount方法中从DB取数据,然后通过publish方法分批将数据传递到process将数据显示到JTable上...
process(List) 方法是处理数据的地方,即传递的数据该如何进行不处理或显示..
setProgress(int) 设置线程外部的JProgress控件值...
基本上通过以上几个方法就可以进行安全的多线程编程了..

例子:
需求:将数据从数据库中取出,然后方法JTable上..
实现:
	class LoadDataTask extends SwingWorker, LinkerManVO> {
		
		private String strQueryName;
		
		private long startTime = 0L;
		
		@Override
		protected List doInBackground() throws Exception {
//			showBusyFrame();
			startTime = System.currentTimeMillis();
			GlobalValue.progressBar.setIndeterminate(true);
			List result = null;
			result = getAllLinker(strQueryName);
			for(int i=0;i chunks) {
			LinkManTableModel model = (LinkManTableModel) detailTable.getModel();
			if(chunks != null) {
				for(int i=0;i 
 

Swing组件部分的代码就贴出来了,需要的可以回帖...

你可能感兴趣的:(多线程,Swing,编程,框架)