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组件部分的代码就贴出来了,需要的可以回帖...