java实现相册转动效果

import java.awt.*; 
import javax.swing.*;

public class MyPanel 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 MyPanel aPanel = new MyPanel(); 
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(); 
this.sleep(10);//此处可以调节转动速度 
} catch (InterruptedException e) 
{ 
e.printStackTrace(); 
} 
} 
} 
}; 
aThread.start(); 
} 
}

你可能感兴趣的:(java,thread,swing,F#,360)