[Изменить] Очевидно, что уже был ответ, и я не знаю, подходит ли этот ответ, или мой ответ по этому вопросу, в вашем программном обеспечении.Одно могу сказать точно, что мой метод позволяет вам использовать собственные алгоритмы масштабирования и т. Д. Вместо встроенных (но вам, вероятно, это тоже не нужно).
Afaik это такневозможно отслеживать прогресс GIF, отображаемого с помощью SWING.Вам придется создать свой собственный GIF-декодер / аниматор, чтобы вы могли «определить», когда GIF собирается зацикливаться или заканчиваться (да, анимированные GIF-файлы могут заканчиваться).
Для этого я использовал стороннюю программузагрузчик от https://github.com/DhyanB/Open-Imaging для получения отдельных кадров и информации о времени.Нет никаких гарантий, что это лучшая библиотека, как я обнаружил чуть более года назад.
С этого момента вам нужно написать собственный аниматор, используя javax.swing.Timer
или аналогичный.