当前位置:文档之家› JAVA简单转盘时钟

JAVA简单转盘时钟

package shiyan;
import java.awt.Font;
import java.awt.Graphics;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class shizhong extends JFrame{
public shizhong()
{ //窗体的设置
// Font jf = new Font(null,Font.BOLD,30);
// this.setFont(jf);
this.setTitle("时钟");
ClockPanel jp_clock = new ClockPanel();
this.add(jp_clock);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(400, 400);
this.setVisible(true);
//线程的设置及启动
Thread ClockRun = new Thread(jp_clock);
ClockRun.start();
}
public static void main(String[] args) {
new shizhong();
}
}
class ClockPanel extends JPanel implements Runnable
{
//表的中间
private double CenterX,CenterY;
private double Radius = 150;
//小时,分钟,秒的针头坐标
private double HPointX,HPointY,MPointX,MPointY,SPointX,SPointY;
private int Year,Month,Day,WeekDay,Hour,Minute,Second;
private final double PI = Math.PI;
public synchronized void paintComponent(Graphics g)
{
super.paintComponent(g);
CenterX = this.getWidth()/2;
CenterY = this.getHeight()/2;
double HRadian = (PI/6)*Hour + (PI/360)* Minute + (PI/21600)* Second;
double MRadian = (PI/30)*Minute + (PI/1800) * Second;
double SRadian = (PI/30)* Second;
HPointX = CenterX + Radius * 0.6 * Math.sin(HRadian);
HPointY = CenterY - Radius * 0.6 * Math.cos(HRadian);
MPointX = CenterX + Radius * 0.8 * Math.sin(MRadian);
MPointY = CenterY - Radius * 0.8 * Math.cos(MRadian);
SPointX = CenterX + Radius * Math.sin(SRadian);
SPointY = CenterX - Radius * Math.cos(SRadian);
g.drawOval((int)(CenterX - Radius), (int)(CenterY - Radius),(int)(2*Radius),(int)(2*Radius));
g.drawString("12",(int)(CenterX),(int)(CenterY - Radius) + 10 );
g.drawString("3", (int)(CenterX + Radius)- 6,(int)(CenterY));
g.drawString("6", (int)(CenterX),(int)(CenterY + Radius));
g.drawString("9", (int)(CenterX - Radius),(int)(CenterY) );
g.drawLine((int)(CenterX),(int)(CenterY),(int)(SPointX),(int)(SPointY));
g.drawLine((int)(CenterX),(int)(CenterY),(int)(MPointX),(int)(MPointY));
g.drawLine((int)(CenterX),(int)(CenterY),(int)(HPointX),(int)(HPointY));
g.drawString("星期" + WeekDay, 30, 320);
g.drawString(Year + " 年" + Month + " 月" + Day + " 日" + Hour + ":" + Minute + ":" + Second, 20, 350);
}
@Override
public void run() {
// TODO Auto-generated method stub
while(true)
{
try{
setCurrentTime();
repaint();
Thread.sleep(1000);
}catch(InterruptedException e)
{
e.printStackTrace();
}
}
}
public void setCurrentTime()
{
//获得时间
Calendar calendar = new GregorianCalendar();
Year = calendar.get(Calendar.YEAR);
Month = calendar.get(Calendar.MONTH);
Day = calendar.get(Calendar.DAY_OF_MONTH);
WeekDay = calendar.get(Calendar.DAY_OF_WEEK);
Hour = calendar.get(Calendar.HOUR);
Minute = calendar.get(Calendar.MINUTE);
Second = calendar.get(Calendar.SECOND);
}
}。

相关主题