Java Swing Загрузка анимации - PullRequest
6 голосов
/ 09 января 2012

Я хотел бы реализовать следующую анимацию загрузки с помощью java swing:

enter image description here

Круг должен вращаться по часовой стрелке.

Что было бы лучшим способомсделать это?

Большое спасибо.

Ответы [ 4 ]

9 голосов
/ 09 января 2012

Просто используйте ImageIcon и анимированный GIF. см. setImageObserver в ImageIcon.

Загрузка значков может быть выполнена с использованием различных онлайн-генераторов, таких как AjaxLoad .

6 голосов
/ 02 марта 2013

Надеюсь, еще не поздно.

Мне удалось получить анимированный 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, и он работал как шарм.

4 голосов
/ 09 января 2012

Вы можете использовать класс Animated Icon , чтобы создать собственную анимацию, используя существующую иконку.

3 голосов
/ 09 января 2012

Это можно нарисовать с помощью пользовательского компонента или пользовательского значка, используя обычные вызовы Java2D. Для меня это выглядит как Arc2D с довольно толстым BasicStroke, нарисованным с GradientPaint.

Также можно экспортировать кадры из Inkscape (или другой графической программы) и загрузить их в виде изображений.

...