Я очень новичок в Java (использую его только около недели) и работаю над симулятором магазина.По сути, я просто хочу сделать основные вещи прямо сейчас, такие как время до закрытия и время с момента открытия переменной, отображаемой на экране.
Я сделал следующие функции в моем расширении Simulation javax.swing.JFrame class:
public void incOpenTime() {
timeOpen++;
int hours = timeOpen / 3600;
int minutes = (timeOpen % 3600) / 60;
int seconds = (timeOpen % 3600) % 60;
this.openTime.setText((hours < 10 ? "0" : "") + hours
+ ":" + (minutes < 10 ? "0" : "") + minutes
+ ":" + (seconds < 10 ? "0" : "") + seconds);
decTimeLeft();
}
public void decTimeLeft() {
int remainingTime = 28800 - timeOpen;
int hours = remainingTime / 3600;
int minutes = (remainingTime % 3600) / 60;
int seconds = (remainingTime % 3600) % 60;
this.timeLeft.setText((hours < 10 ? "0" : "") + hours
+ ":" + (minutes < 10 ? "0" : "") + minutes
+ ":" + (seconds < 10 ? "0" : "") + seconds);
}
Переменные openTime и timeLeft, использующие метод setText (), являются частью самого графического интерфейса.
В основном я называю incOpenTime следующим образом:
while(this.timeOpen < 28800)
{
incOpenTime();
}
Прежде всего, когда я запускаю это, он в основном просто проходит через цикл и выводит только последний раз на экран.Как бы я сделал так, чтобы время постоянно менялось?
Во-вторых, я хотел бы немного задержать его ... возможно, около 1 мс в секунду, чтобы моделирование работало медленнее, а другие данные выводились на экран (позже) более читабельно.Я пробовал Thread.sleep (1);в цикле, но он не отображает числа при их изменении.
Пожалуйста, помогите.
Спасибо
РЕДАКТИРОВАТЬ:
Вот что я сделалчтобы это заработало.В основном:
timer = new Timer();
for(int i=1; i<= 28800; i++)
{
timer.schedule(new task(), 1*i);
}
Сделан новый класс:
class task extends TimerTask {
@Override
public void run() {
incOpenTime();
}
}