longtask.java

来自「北大Java 语言程序设计 ppt课件及源码」· Java 代码 · 共 82 行

JAVA
82
字号
/** Uses a SwingWorker to perform a time-consuming (and utterly fake) task. */public class LongTask {    private int lengthOfTask;    private int current = 0;    private String statMessage;    LongTask() {        //Compute length of task...        //In a real program, this would figure out        //the number of bytes to read or whatever.        lengthOfTask = 1000;    }    /**     * Called from ProgressBarDemo to start the task.     */    void go() {        current = 0;        final SwingWorker worker = new SwingWorker() {            public Object construct() {                return new ActualTask();            }        };        worker.start();    }    /**     * Called from ProgressBarDemo to find out how much work needs     * to be done.     */    int getLengthOfTask() {        return lengthOfTask;    }    /**     * Called from ProgressBarDemo to find out how much has been done.     */    int getCurrent() {        return current;    }    void stop() {        current = lengthOfTask;    }    /**     * Called from ProgressBarDemo to find out if the task has completed.     */    boolean done() {        if (current >= lengthOfTask)            return true;        else            return false;    }    String getMessage() {        return statMessage;    }    /**     * The actual long running task.  This runs in a SwingWorker thread.     */    class ActualTask {        ActualTask () {            //Fake a long task,            //making a random amount of progress every second.            while (current < lengthOfTask) {                try {                    Thread.sleep(1000); //sleep for a second                    current += Math.random() * 100; //make some progress                    if (current > lengthOfTask) {                        current = lengthOfTask;                    }                    statMessage = "Completed " + current +                                  " out of " + lengthOfTask + ".";                } catch (InterruptedException e) {}            }        }    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?