如何在java中创建旋转圆动画?
我想在<代码> jPANS/COD>中间创建一个旋转圆圈,并能够设置开始/停止旋转,也可以设置为可见/不可见。< /P> 是否有任何机构知道如何做,或者有任何现有的例子?如何在java中创建旋转圆动画?,java,swing,paintcomponent,paint,Java,Swing,Paintcomponent,Paint,我想在 jPANS/COD>中间创建一个旋转圆圈,并能够设置开始/停止旋转,也可以设置为可见/不可见。< /P> 是否有任何机构知道如何做,或者有任何现有的例子? private static class RotatingCirclePanel extends JPanel { protected void paintComponent(Graphics g) { } } 这就是一个例子。 编辑:这是第一个版本。任
private static class RotatingCirclePanel extends JPanel {
protected void paintComponent(Graphics g) {
}
}
这就是一个例子。
编辑:这是第一个版本。任何主体都可以帮助制作gif示例中的版本吗
public class ProgressWheelPanel extends JPanel {
private double angleInDegrees = 1;
private Timer rotatingTimer;
public ProgressWheelPanel() {
rotatingTimer = new Timer(100, new ActionListener() {
// @Override
public void actionPerformed(ActionEvent e) {
angleInDegrees = angleInDegrees +1;
if (angleInDegrees == 360) {
angleInDegrees = 0;
}
repaint();
}
});
rotatingTimer.setRepeats(false);
rotatingTimer.start();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g.create();
rotatingTimer.stop();
g2d.clearRect(0, 0, getWidth(), getHeight());
g2d.setBackground(Color.white);
g2d.setColor(Color.black);
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.3f));
g2d.setStroke(new BasicStroke(10f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER));
g2d.rotate(angleInDegrees * Math.PI / 180.0, getWidth() / 2, getHeight() / 2);
g2d.drawLine(getWidth() / 2, getHeight() / 2, getWidth() / 2 + 100, getHeight() / 2);
//**************************************************************************************
AffineTransform transformer = new AffineTransform();
transformer.translate(5,5);
transformer.scale(2,2);
g2d.getTransform().concatenate(transformer);
//***************************************************************************************
g2d.dispose();
rotatingTimer.start();
}
public void start(){
rotatingTimer.start();
}
public void stop(){
rotatingTimer.stop();
}
public static void main(String[] args) {
final ProgressWheelPanel demo = new ProgressWheelPanel();
WebButton btnStrat= new WebButton("Start"),btnStop= new WebButton("Stop");
btnStrat.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
demo.setVisible(true);
demo.start();
}
});
btnStop.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
demo.stop();
demo.setVisible(false);
}
});
JFrame frame = new JFrame();
Container cp = frame.getContentPane();
cp.add(demo,BorderLayout.CENTER);
cp.add(btnStrat,BorderLayout.NORTH);
cp.add(btnStop,BorderLayout.SOUTH);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500, 500);
frame.setLocation(500, 500);
frame.setVisible(true);
}
}
您可以简单地在a或a*上显示动画GIF,例如使用问题中显示的图像,然后设置包含该图像的控件的可见/不可见属性。然而,这并没有给你一种方法(据我所知)在任何给定的时间点开始/停止动画 如果你想要完整的功能,包括启动/停止,你可能需要自己启动。在这种情况下,开始编码!当您遇到问题时,我们很乐意帮助您,但我们不会为您编写代码。(但在你开始做这件事之前,问问自己:你真的需要,我的意思是真的需要,启动/停止功能吗?如果你能适应显示/隐藏,你已经到家了……)
*)有很多方法可能会派上用场。包含一个代码片段,用于基于图像创建这样的图标。它基本上使用代码来旋转图标,以及触发旋转的
计时器
,以获得动画效果。Jeez,希望没有一个有癫痫发作倾向的人来访问这个问题。可能的动画GIF复制品会占用内存资源,应谨慎发送。我的代码更新了,我制作了第一个版本。它可以旋转/启动/停止,但与上面示例中的动画gif不同。我还不知道如何制作灰色背景圆圈。