Solo pasa la referencia del JFrame al constructor de Timeout:
Código Java:
Ver originalimport java.util.Timer;
import java.util.TimerTask;
public class Timeout {
private int hour;
private int minute;
private int second;
private boolean isTimerRunning;
private MainGUI mainGui;
private TimeFormatter tf;
public Timeout(MainGUI mainGui) {
tf = new TimeFormatter();
mainGui = mainGui;
}
@Override
public void run() {
isTimerRunning = true;
if(second > 0) {
second--;
} else {
second = 59;
if(minute > 0) minute--;
else {
minute = 59;
if(hour > 0) hour--;
// si segundo = 0, minuto = 0 y hora = 0,
// cancelamos el timer
else {
isTimerRunning = false;
timer.cancel();
timer.purge();
}
}
}
if(isTimerRunning) {
String time
= tf.
formatTime(hour, minute, second
); mainGui.getTxtTime().setText(time);
}
}
}; // fin timertask
public void start(int timeout, int interval) {
timer.schedule(task, timeout, interval);
}
// getters y setters para las propiedades
} // fin clase
Redefine Display para que retorne la hora formateada:
Código Java:
Ver originalpublic class TimeFormat {
public String formatTime
(int hour,
int minute,
int second
) {
fullHour += (hour > 9) ? ":" + hour : "0" + hour;
fullHour += (minute > 9) ? ":" + minute : ":0" + minute;
fullHour += (second > 9) ? ":" + second : ":0" + second;
return fullHour;
}
}
Entonces, asocias el JFrame con el Timer así:
Código Java:
Ver originalpublic class MainGUI
extends JFrame {
private Timeout timeout;
public MainGUI() {
new Timeout(this);
initComponents();
}
private void initComponents() {
// aqui construyes tu GUI
}
public void startTimer(int delay, int interval) {
timeout.start(delay, interval);
}
}
Y la clase Main:
Código Java:
Ver originalpublic class Main {
public static void main
(String[] args
) { MainGUI gui = new MainGUI();
gui.setVisible(true);
gui.startTime(0, 1000);
}
}