Надеюсь, еще не поздно.
Мне удалось получить анимированный GIF в моей JPanel следующим образом:
private JPanel loadingPanel() {
JPanel panel = new JPanel();
BoxLayout layoutMgr = new BoxLayout(panel, BoxLayout.PAGE_AXIS);
panel.setLayout(layoutMgr);
ClassLoader cldr = this.getClass().getClassLoader();
java.net.URL imageURL = cldr.getResource("img/spinner.gif");
ImageIcon imageIcon = new ImageIcon(imageURL);
JLabel iconLabel = new JLabel();
iconLabel.setIcon(imageIcon);
imageIcon.setImageObserver(iconLabel);
JLabel label = new JLabel("Loading...");
panel.add(iconLabel);
panel.add(label);
return panel;
}
Некоторые моменты этого подхода:
1. Файл изображения находится внутри банки;
2. ImageIO.read () возвращает BufferedImage, которое не обновляет ImageObserver;
3. Еще одна альтернатива для поиска изображений, которые связаны в файле jar, - попросить загрузчик классов Java, код, который загрузил вашу программу, получить файлы. Он знает, где вещи.
Таким образом, благодаря этому я смог получить свой анимированный GIF-файл внутри моей JPanel, и он работал как шарм.