Попробуйте что-то вроде:
private volatile boolean killCheck;
public void startChecking() {
killCheck = false;
Thread checker = new Thread() {
public void run() {
for (;;) {
try { Thread.sleep( 500 ); }
catch (InterruptedException ie) { break; }
if (killCheck) break;
EventQueue.invokeLater( new Runnable() {
public void run() {
// Update GUI here on EventQueue.
}
} );
}
}
};
checker.start();
}
public void stopChecking() { killCheck = true; }
Таймеры (а их по крайней мере два, в разгаре и в размерах) - это весело и элегантно, но иногда вам просто нужно выполнить работу.Замените мои 500 на ваше "время X".Обязательно звоните в Swing на EventQueue!И, возможно, добавить сообщение, если возникнет InterruptedException.
Проверьте SwingWorker;он будет делать то же самое с большей безопасностью, но если вы собираетесь делать многое из этого, вы можете обнаружить, что у вас есть больше возможностей сделать это самостоятельно.