import javax.swing.*;
import java.awt.*;
import java.util.*;
import java.lang.Thread;
import java.text.DecimalFormat;
public class DongClock
extends JPanel {
/**
* @param args
*/
private int hour;
private int minute;
private int second;
//构造函数
public DongClock() {
setCurrentTime();
}
//返回小时
public int getHour() {
return hour;
}
public int getMinute() {
return minute;
}
public int getSecond() {
return second;
}
//绘制时钟
protected void paintComponent
(Graphics g
) {
super.paintComponent(g);
//初始化
int clockRadius
= (int)(Math.
min(getWidth
(), getHeight
()) * 0.8 * 0.5);
int xCenter = getWidth() / 2;
int yCenter = getHeight() / 2;
//画圆
g.drawOval(xCenter - clockRadius, yCenter - clockRadius, 2 * clockRadius, 2 * clockRadius);
g.drawString("12", xCenter - 5, yCenter - clockRadius + 15);
g.drawString("9", xCenter - clockRadius + 3, yCenter + 5);
g.drawString("3", xCenter + clockRadius - 10, yCenter + 3);
g.drawString("6", xCenter - 3, yCenter + clockRadius - 3);
//画秒针
int sLength = (int)(clockRadius * 0.8);
int xSecond
= (int)(xCenter
+ sLength
* Math.
sin(second
* (2 * Math.
PI / 60)));
int ySecond
= (int)(yCenter
- sLength
* Math.
cos(second
* (2 * Math.
PI / 60)));
g.drawLine(xCenter, yCenter, xSecond, ySecond);
//画分针
int mLenth = (int)(clockRadius * 0.65);
int xMinute
= (int)(xCenter
+ mLenth
* Math.
sin(minute
* (2 * Math.
PI / 60)));
int yMinute
= (int)(xCenter
- mLenth
* Math.
cos(minute
* (2 * Math.
PI / 60)));
g.drawLine(xCenter, yCenter, xMinute, yMinute);
//画时针
int hLength = (int)(clockRadius * 0.5);
int xHour
= (int)(xCenter
+ hLength
* Math.
sin((hour
% 12 + minute
/ 60.0) * (2 * Math.
PI / 12)));
int yHour
= (int)(yCenter
- hLength
* Math.
cos((hour
% 12 + minute
/ 60.0) * (2 * Math.
PI / 12)));
g.drawLine(xCenter, yCenter, xHour, yHour);
//画数字时钟
g.drawString(s.format(getHour()) + ":" + s.format(getMinute()) + ":" + s.format(getSecond()), xCenter - 22, yCenter - clockRadius - 15);
}
public void setCurrentTime() {
this.
hour = calendar.
get(Calendar.
HOUR_OF_DAY);
this.
minute = calendar.
get(Calendar.
MINUTE);
this.
second = calendar.
get(Calendar.
SECOND);
}
public static void main
(String[] args
) {
// TODO Auto-generated method stub
frame.setResizable(false);
frame.setTitle("DiaplayClock");
frame.
setDefaultCloseOperation(JFrame.
EXIT_ON_CLOSE);
frame.setSize(300,350);
frame.setVisible(true);
while(true) {
DongClock clock = new DongClock();
frame.getContentPane().add(clock);
clock.setVisible(true);
frame.validate();
try {
}
e.printStackTrace();
}
clock.setVisible(false);
frame.remove(clock);
clock = null;
frame.validate();
}
}
}