我想用Java Swing实现以下加载动画:
圆形必须顺时针旋转。有什么最好的方法可以做到这一点吗?
非常感谢。
![enter image description here](https://istack.dev59.com/7jCyT.webp)
非常感谢。
只需使用ImageIcon和一个动画gif。在ImageIcon中查看setImageObserver。
可以使用各种在线生成器(如AjaxLoad)来制作加载图标。
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类加载器,即加载程序的代码,以获取文件。它知道物品的位置。
因此,通过这种方法,我可以将我的动态gif图像放在JPanel内,并且它可以完美地工作。
这个图形可以用自定义组件或自定义图标来绘制,使用常规的Java2D
调用。在我看来,它看起来像一个带有相当粗的BasicStroke
和一个GradientPaint
绘制的Arc2D
。
或者,从Inkscape(或其他图形程序)导出帧并将其作为图像加载。