Я создал простой класс таймера, который отсчитывает от 20 до нуля, если его переменная timerStop не установлена в true и обновляет JTextFiled в массиве графических интерфейсов после каждой секунды. Каждый раз, когда используется таймер, создается новый GameTimer и передается в новый поток.Java - переменная темы, сохраняющая предыдущее значение
ПРОБЛЕМА: Первый запуск таймера выполняется так, как ожидалось, но последующие экземпляры начнутся с обновления текстового поля графического интерфейса с последним значением предыдущего таймера (номер, на котором он был остановлен), прежде чем считать с 20 по мере того, как он должен.
Я попытался сбросить переменную обратно до 20 в конце кода и распечатать значение в качестве теста, а переменная действительно печатает «20», но все же графический интерфейс пользователя обновляет предыдущее время остановки, когда запускается следующий экземпляр.
Я использую Netbeans 8.0.2 IDE
Действительно признателен за любые советы и подсказки по поводу моего кода, спасибо!
public class GameTimer implements Runnable
{
private volatile int secondsLeft;
private MultiTextGUI[] guis;
private boolean timerStop;
public GameTimer(MultiTextGUI[] MTguis)
{
secondsLeft = 20;
guis = MTguis;
timerStop = false;
}
public void setTimerStop(boolean stop)
{
timerStop = stop;
}
@Override
public void run()
{
while (secondsLeft > 0 && !timerStop)
{
try
{
Thread.sleep(1000);
}
catch (Exception e)
{
System.out.println("Error: " + e.toString());
}
secondsLeft--;
System.out.println(secondsLeft); //TEST
for (MultiTextGUI gui: guis)
{
if (secondsLeft > 0)
{
if (gui != null)
{
gui.updateTimer(secondsLeft);
}
}
else
{
if (gui != null)
{
gui.setTimerOn(false);
}
}
}
}
secondsLeft = 20;
System.out.println(secondsLeft); //TEST
}
}
Главная Тема:
GameTimer gt = new GameTimer(g);
Thread timerThread = new Thread(gt);
timerThread.start();
//code to show timer in gui
//code for countdownlatch
gt.setTimerStop(true);
поэтому метод updateGUI() должен запускаться в EDT? Не могли бы вы показать мне простой пример того, как это сделать, пожалуйста. –