当前位置:文档之家› Java实现电子时钟

Java实现电子时钟

项目效果图:
源代码:
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Line2D;
import java.awt.image.BufferedImage;
import java.awt.EventQueue;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.JFrame;
import javax.swing.JPanel;
/* author: 蒋冰 */
public class MoveDraw extends JFrame{
private Draw draw = new Draw();
public static void main(String[] args){
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
MoveDraw frame = new MoveDraw();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public MoveDraw(){
super();
setTitle("动画");
setBounds(400,300,400,300);
add(draw);
Thread thread = new Thread(draw);// 创建线程对象
thread.start();// 启动线程对象
}
class Draw extends JPanel implements Runnable{
Calendar calendar = new GregorianCalendar();
int hour = calendar.get(Calendar.HOUR);
int minute = calendar.get(Calendar.MINUTE);
int second = calendar.get(Calendar.SECOND);
int year = calendar.get(Calendar.YEAR);
int mouth = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
int week = calendar.get(Calendar.DAY_OF_WEEK);
String date = year+"-"+mouth+"-"+day;
String weeks[] = new String[]{"星期天","星期一","星期二","星期三","星期四","星期五","星期六"};
double theta = second * (2 * Math.PI)/60 ;
double theta1 = (minute * (2 * Math.PI) + theta)/60;
double theta2 = (hour*(2 * Math.PI) + theta1)/12;
public void paint(Graphics g){
Graphics2D g2 = (Graphics2D) g;
g2.clearRect(0, 0, 400, 300);
g2.translate(draw.getWidth()/2, draw.getHeight()/2);
g2.setColor(Color.blue);
Font font = new Font("楷体",Font.ROMAN_BASELINE
,14);
g2.setFont(font);
g2.drawString(date, -25, 30);
g2.drawString(weeks[week-1]+"", -15, 50);
g2.setColor(Color.black);
for(int i=1; i<=12; i++){
double theta = i*2*Math.PI/12;
g2.rotate(theta);
int width = -7;
int height = -85;
g2.drawString(i+"", width, height);
g2.fillOval(-4, -104, 8, 8);
g2.rotate(2*Math.PI - theta);
}
for(int i=1; i<=60; i++){
double theta = i*2*Math.PI/60;
g2.rotate(theta);
g2.fillOval(-2, -102, 4, 4);
g2.rotate(2*Math.PI - theta);
}
Line2D.Float line = new Line2D.Float(0, 0, 0, -90);
Line2D.Float line1 = new Line2D.Float(0, 0, 0, -65);
Line2D.Float line2 = new Line2D.Float(0, 0, 0, -37);
g2.rotate(theta);
g2.draw(line);
g2.rotate(2 * Math.PI - theta);
g2.rotate(theta1);
g2.draw(line1);
g2.rotate(2 * Math.PI - theta1);
g2.rotate(theta2);
g2.draw(line2);
}
public void run(){
while(true){
theta += Math.PI/30;
theta1 = (minute * (2 * Math.PI) + theta)/60;
theta2 = (hour*(2 * Math.PI) + theta1)/12;
repaint();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO自动生成的 catch 块
e.printStackTrace();
}
}
}
}
}。

相关主题