Я хотел бы реализовать следующую загрузку анимации с Java Swing:Java Swing Загрузка анимации
Круг должен вращаться по часовой стрелке.
Какой был бы лучший способ сделать это?
спасибо.
Я хотел бы реализовать следующую загрузку анимации с Java Swing:Java Swing Загрузка анимации
Круг должен вращаться по часовой стрелке.
Какой был бы лучший способ сделать это?
спасибо.
Вы можете использовать класс Animated Icon, чтобы создать свою собственную анимацию, используя существующий значок.
Это может быть нарисовано с помощью пользовательского компонента или пользовательского значка с использованием обычных вызовов Java2D
. Для меня это выглядит как Arc2D
с довольно толстым BasicStroke
, нарисованным с помощью GradientPaint
.
Альтернативно, экспортируйте кадры из Inkscape (или другой графической программы) и загрузите их в виде изображений.
Просто используйте ImageIcon и анимированный gif. см. setImageObserver в ImageIcon.
Загрузка значков может быть выполнена с использованием различных онлайн-генераторов, таких как AjaxLoad.
ОЧЕНЬ СЛАВНО! полезно! – drzymala
Надеюсь, еще не слишком поздно для этого.
мне удалось получить анимированный 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, и это сработало как шарм.
анимированный gif не вариант, потому что ему не хватает хороших и гладких прозрачных эффектов. Прямоугольник в основном должен быть прозрачным и со 100% прозрачным фоном, который gifs не поддерживает, не делая анимацию уродливой и пиксельной. Он просто работает для прямоугольных границ и без замирания между объектами. Итак ... как это сделать правильно? APNG мог это сделать, но, разумеется, Java не поддерживает его с помощью Linux. –
Переделка спрайтов спрайтов может работать для этого. Конечно, загрузка должна выполняться в фоновом потоке, например, в SwingWorker. –
См. Также [Q & A] (http://stackoverflow.com/questions/6238037/how-do-i-align-this-text-correctly). – trashgod