@cattom72
Врач анестезиолог-реаниматолог. Караганда.

Здравствуйте! Почему из метода run() не получается изменить состояние компонентов Swing?

Делаю программу - хронометр (часы, таймер, будильник, секундомер, временные расчеты). Для отображения текущего времени использовал класс Timer, и все без проблем отображается на панели. Но для секундомера решил использовать JPanel, имплементирующий Runnable. В консоли все замечательно работает. Но состояние меток на панели метод run() не меняет. Подскажите, пожалуйста, в чем проблема. Я не занимаюсь программированием профессионально, поэтому общие фразы типа "кури мануалы" или "юзай JavaFX" не нужны. Если знаете, просто укажите путь чуть поконкретнее!)
@Override
	public void run() {
		long time_start = Calendar.getInstance().getTimeInMillis();
		long time_current = 0L;
		while (true) {
			time_current = Calendar.getInstance().getTimeInMillis() - time_start;
			hours = time_current/3600000;
			time_current = time_current % 3600000;
			minutes = time_current/60000;
			time_current  = time_current % 60000;		
			seconds = time_current/1000;
			time_current = time_current % 1000;
			santiSec = time_current/10;
									
			System.out.println(time_current + ", santi = " + santiSec + ", seconds= " + seconds + ", minutes =" + minutes + ", hours = " + hours);
			lblMillisec_0.setIcon(Clock_Face.iconSmallDigits[1][(int) (santiSec/10)]);
			lblMillisec_1.setIcon(Clock_Face.iconSmallDigits[1][(int) (santiSec%10)]);
			try {
				Thread.sleep(10);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
  • Вопрос задан
  • 41 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы