как я могу обновить изображение по своему (при изменении модели) или по системе (когда другое окно испортило изображение) запрос на перекрашивание и не использовать FPSAnimator?
Один из подходов заключается в использовании шаблона Model-View-Controller с контроллером, имеющим таймер, который уведомляет представления только при необходимости.Я обычно предпочитаю javax.swing.Timer, так как обработчик событий действия выполняется в потоке диспетчеризации событий.
javax.swing.Timer