Я думаю, вам нужно перезапускать счетчик после каждой остановки.
Для startButton необходимо перезапустить работника, как в
private JButton startButton = new JButton(new AbstractAction("Start") {
@Override
public void actionPerformed(ActionEvent arg0) {
if(!isStarted) {
worker = new Worker(); // New line
worker.execute();
isStarted = false;
}
}
});
Для остановки вы можете использовать
worker.setStopFlag(); // in stopButton actionPerformed block.
в рабочем классе
приватный логический stopFlag = false;
и добавьте
if( stopFlag)
break;
после Thread.sleep (60);
и, наконец, поместите установщик для stopFlag в конце класса Worker как
void setStopFlag(){
stopFlag = true;
}
Кстати, вы можете использовать отмена (true), если хотите получить исключение.