【发布时间】:2012-02-05 16:47:16
【问题描述】:
我想用java swing实现如下加载动画:
圆必须顺时针旋转。
最好的方法是什么?
非常感谢。
【问题讨论】:
-
交换一堆精灵可以解决这个问题。当然,加载必须在后台线程中完成,例如 SwingWorker 提供的线程。
-
另见Q&A。
标签: java swing animation loading jlabel
我想用java swing实现如下加载动画:
圆必须顺时针旋转。
最好的方法是什么?
非常感谢。
【问题讨论】:
标签: java swing animation loading jlabel
只需使用 ImageIcon 和动画 gif。请参阅 ImageIcon 中的 setImageObserver。
可以使用各种在线生成器制作加载图标,例如AjaxLoad。
【讨论】:
希望现在还为时不晚。
我设法通过这种方式在我的 JPanel 中获取了动画 gif:
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.图像文件在jar内;
2、ImageIO.read()返回一个BufferedImage,不更新ImageObserver;
3. 另一种查找捆绑在 jar 文件中的图像的方法是询问 Java 类加载器(加载程序的代码)来获取文件。它知道东西在哪里。
因此,通过这样做,我能够在我的 JPanel 中获得我的动画 gif,它就像一个魅力。
【讨论】:
您可以使用Animated Icon 类使用现有图标创建自己的动画。
【讨论】:
这可以使用自定义组件或自定义图标绘制,使用常规的Java2D 调用。对我来说,它看起来像是一个 Arc2D 和一个相当厚的 BasicStroke 用 GradientPaint 绘制的。
或者,从 Inkscape(或其他图形程序)导出帧并将它们作为图像加载。
【讨论】: