Vika
Vika

Java. Не срабатывает .repaint()

Пытаюсь сделать простую анимацию. Использую в цикле Thread.sleep(50) и panel.repaint() для перерисовке графической панели. Но за весь цикл панель не разу не перерисовывается. В других частях программы всё нормально работает. Что может быть не так? И есть ли еще какой то способ создать анимацию? Таймер не помог.
Java изучаю совсем недавно поэтому многого просто не знаю. Буду благодарен за любую помощь.

Thread.sleep(50), выполняется внутри отдельного потока, в нем же вызывается перерисовка. (Пытался вызывать перерисовку и в других потоках, точно также, не разу не сработала.)

Проблему решил следующим образом:
Убрал цикл и вместо него поставил проверку boolean значения в отдельном потоке (который меняет изображение) и в методе paintComponent у панели.
Сделал кнопку которая переключает это значение.
Теперь каждый раз когда панель перерисовывается, она проверяет включена ли анимация и если это так вызывает метод потока который меняет изображение и снова перерисовывает панель. Так происходит пока не будет нажата кнопка которая изменит boolean переменную на false.

P.S. Знаю что возможно решение не самое практичное, но работает.

СВ
Сашуля Верецоца

Thread.sleep(50) внутри какой функции выполняется?
Прямо внутри функции с отрисовкой?
Через таймер нужно, определенно.
Либо создать отдельный поток и в нём запускать отрисовку и pause()

Похожие вопросы
BufferedWriter в Java
Програмирование на Java
Программирование Java
программирование, java
как работать с java ?
JAVA программирование
Кто хорошо знает java?
Где у меня ошибка? (Java)
Что лучше Java или Scala?
Возможно ли писать скрипты для unity 3d на java (не java script а именно java)?