import java.awt.*;
import javax.swing.*;public class MyPanel1Test extends JPanel {    private int r = 150;
    private int angle = 0;    public void paintComponent(Graphics g) {
        int x = (int) (r / 2 * Math.cos(angle / 180.0 * Math.PI));
        int y = -(int) (r / 2 * Math.sin(angle / 180.0 * Math.PI));
        g.translate(r + 10, r + 10);
        g.setColor(Color.BLACK);
        g.fillArc(-r, -r, 2 * r, 2 * r, angle, -180);
        g.setColor(Color.WHITE);
        g.fillArc(-r, -r, 2 * r, 2 * r, angle, 180);
        g.fillArc(x - r / 2, y - r / 2, r, r, angle, -180);
        g.setColor(Color.BLACK);
        g.fillArc(-x - r / 2, -y - r / 2, r, r, angle, 180);
        g.drawOval(-r, -r, 2 * r, 2 * r);
        g.fillOval(x - 10, y - 10, 20, 20);
        g.setColor(Color.WHITE);
        g.fillOval(-x - 10, -y - 10, 20, 20);
    }    public void setAngle(int angle) {
        while (true) {
            if (angle < 0) {
                angle = angle + 360;
            }
            if (angle >= 360) {
                angle = angle - 360;
            } else {
                break;
            }
        }
        this.angle = angle;
    }    public int getAngle() {
        return angle;
    }    public static void main(String[] Args) {
        JFrame f = new JFrame();
        final MyPanel1Test aPanel = new MyPanel1Test();
        f.add(aPanel);
        f.setVisible(true);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setSize(350, 350);
        f.setLocation(300, 200);
        Thread aThread = new Thread() {            public void run() {
                while (true) {
                    try {
                        aPanel.setAngle(aPanel.getAngle() + 1);//加一逆时针转,减一顺时针转
                        aPanel.repaint();
                        sleep(50);//此处可以调节转动速度
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };
        aThread.start();
    }
}