我有一个名为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正在运行”,任务只运行一次。
答案 0 :(得分:9)
使用javax.swing.Timer进行Swing,因为一切都是在EDT上完成的(默认情况下),使用Timer Class,这是先决条件,请参阅how to use Timer。 updating JButton on a Timer的另一个相关示例以及working with Swing Timer和Scrolling Text
的另一个示例答案 1 :(得分:5)
对于重复执行任务,请使用Timer.schedule(TimerTask task, long delay, long period)
或scheduleAtFixedRate
方法
答案 2 :(得分:3)
阅读有关Timer的文档有重复执行任务的另一个重写方法,您使用的方法只执行一次您可以使用
scheduleAtFixedRate(TimerTask任务,长延迟,长时间段)
或
计划(TimerTask任务,长延迟,长期)