2012-01-09 7 views
6

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

enter image description here

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

Какой был бы лучший способ сделать это?

спасибо.

+0

Переделка спрайтов спрайтов может работать для этого. Конечно, загрузка должна выполняться в фоновом потоке, например, в SwingWorker. –

+0

См. Также [Q & A] (http://stackoverflow.com/questions/6238037/how-do-i-align-this-text-correctly). – trashgod

ответ

4

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

3

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

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

9

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

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

+0

ОЧЕНЬ СЛАВНО! полезно! – drzymala

6

Надеюсь, еще не слишком поздно для этого.

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

+1

анимированный gif не вариант, потому что ему не хватает хороших и гладких прозрачных эффектов. Прямоугольник в основном должен быть прозрачным и со 100% прозрачным фоном, который gifs не поддерживает, не делая анимацию уродливой и пиксельной. Он просто работает для прямоугольных границ и без замирания между объектами. Итак ... как это сделать правильно? APNG мог это сделать, но, разумеется, Java не поддерживает его с помощью Linux. –