TimerTask запускается только один раз
У меня есть задание 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
это текстовое поле Почему я запускаю задачу, все это "задача 1 выполняется" в диалоговом окне вывода в Netbeans, и задача запускается только один раз.
3 ответа
Используйте javax.swing.Timer для Swing, так как все делается на EDT (по умолчанию) с использованием класса Timer, что является обязательным условием, см. Раздел " Использование Timer". Еще один связанный пример обновления JButton на Timer, а другой - для работы с Swing Timer и Scrolling Text.
Для повторного выполнения задачи используйте Timer.schedule(TimerTask task, long delay, long period)
или же scheduleAtFixedRate
методы
Прочтите документацию по таймеру. Существует еще один переопределенный метод для многократного выполнения задачи. Вы используете метод, который выполняется только один раз. Вы можете использовать
scheduleAtFixedRate(задача TimerTask, длительная задержка, длительный период)
или же
расписание (задача TimerTask, длительная задержка, длительный период)