1

我有一个名为timer

timer.schedule(new task1(), 1000*minutes);

任务:

class task1 extends TimerTask {
        @Override

    public void run()
    {
            try {
                task();
            } catch (SAXException ex) {
                Logger.getLogger(task1.class.getName()).log(Level.SEVERE, null, ex);
            } catch (ParserConfigurationException ex) {
                Logger.getLogger(task1.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(task1.class.getName()).log(Level.SEVERE, null, ex);
            } catch (URISyntaxException ex) {
                Logger.getLogger(task1.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InterruptedException ex) {
                Logger.getLogger(task1.class.getName()).log(Level.SEVERE, null, ex);
            }
    }
    public void task() throws SAXException, ParserConfigurationException, IOException, URISyntaxException, InterruptedException {
        Pinner_xml t = new Pinner_xml();
        t.xml(frame.t1.getText());

        frame.output.append("task 1 \n");
        System.out.println("task 1 is running");
    }
}

frame是我的框架名称,output是一个文本框。为什么我在Netbeans的输出对话框中运行任务全部是“任务1正在运行”并且任务只运行一次。

4

3 回答 3

9

javax.swing.Timer用于 Swing,因为一切都在 EDT(默认情况下)使用 Timer 类完成,这是先决条件,请参阅如何使用 Timer另一个用于更新计时器上的 JButton和另一个用于使用 Swing TimerScrolling Text的相关示例

于 2013-06-18T11:40:23.173 回答
5

对于重复的任务执行使用Timer.schedule(TimerTask task, long delay, long period)scheduleAtFixedRate方法

于 2013-06-18T11:39:44.773 回答
3

阅读有关Timer的文档还有另一种重复执行任务的重写方法,您正在使用仅执行一次的方法您可以使用

scheduleAtFixedRate(TimerTask 任务,长延时,长周期)

或者

schedule(TimerTask 任务,长延时,长周期)

于 2013-06-18T11:43:18.797 回答