首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

swingwork跟进度条整合小例子

2012-09-08 
swingwork和进度条整合小例子有个学弟问我swing进度条的用法,于是写了这个小例子。 package org.sz.treeim

swingwork和进度条整合小例子

有个学弟问我swing进度条的用法,于是写了这个小例子。


 

package org.sz.tree;import java.awt.BorderLayout;public class TestJProgressBar extends JFrame{    private JProgressBar bar = new JProgressBar(0, 100);    private JTextArea area = new JTextArea();        public TestJProgressBar() {    setTitle("swingworker和进度条的小例子");    add(bar, BorderLayout.CENTER);        add(area, BorderLayout.SOUTH);    pack();        setVisible(true);        start();    }    private void start() {    ProGressWork work = new ProGressWork();    work.addPropertyChangeListener(new PropertyChangeListener(){@Overridepublic void propertyChange(PropertyChangeEvent evt) {System.out.print(evt.getNewValue());}    });    work.execute();    }    public static void main(String[] args) {    SwingUtilities.invokeLater(new Runnable() {@Overridepublic void run() {new TestJProgressBar();}    });    }        class ProGressWork extends SwingWorker<List<Work>, Work> {    @Overrideprotected List<Work> doInBackground() throws Exception {    int i = 0;    List<Work> list = new ArrayList<Work>();    //模拟耗时任务    //假设有100项待完成任务    while (i < 100) {    i++;    /*******模拟开始一项新工作*******/    Work w = new Work(i);        list.add(w);                publish(w);                setProgress(100 * list.size() / 100);    Thread.sleep(1000);    /*******模拟完成此项工作*******/    }    return list;}    //调用publist的时候会调用    //注意这里是"批处理"    @Override    protected void process(List<Work> works) {    for (Work work : works) {    bar.setValue(work.getId());        }    }    @Override    protected void done() {    area.append("工作已全部完成");    }    }    class Work {        //工作编号    private int id;    public Work(int id) {        this.id = id;        }    public int getId() {    return id;    }    }}

热点排行