new Timer(1000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
timeout--;
if(timeout>=1){
status1.setText("Time out: " + timeout);
}else{
patient1.setText("Patient: ");
status1.setText("Status: Available");
doctor.get(0).setStatus(true);
countDoc++;
setDoc.setText(avDoc + countDoc);
timeout = 24;
}
}
}).start();
Как остановить эту часть таймера в конце инструкции else? Я действительно поцарапал себе голову и обыскал почти всюду
Если вы пытаетесь остановить таймер из своего ActionListener, вы можете получить ссылку на объект Timer из метода getSource()
, а затем остановить его, вызвав stop()
в ссылке:
((timer) e.getSource()).stop();
или сломать его:
// assuming an ActionEvent variable named e
Timer timer = (Timer) e.getSource();
timer.stop();
и в контексте:
public void actionPerformed(ActionEvent e) {
timeout--;
if(timeout>=1){
status1.setText("Time out: " + timeout);
}else{
patient1.setText("Patient: ");
status1.setText("Status: Available");
doctor.get(0).setStatus(true);
countDoc++;
setDoc.setText(avDoc + countDoc);
timeout = 24;
((timer) e.getSource()).stop();
}
}
сначала определите таймер так:
Timer tim = new Timer(......)
tim.start();
tim.stop();
это позволит вам останавливать таймер в любом месте (при условии, что вы сделаете его глобальным)
вы также можете легко изменить его атрибуты, если привязать его к var, а не создать такой объект.
(Timer)
? Это приведение, которое требуется, так какgetSource()
объявлен как возвращающий Object.