package com.test;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.Calendar;
import java.util.Date;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.Timer;
public class digitalClock{
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame f =new JFrame();
Container c=f.getContentPane();
c.setLayout(new BorderLayout());
c.add(new Clock(),BorderLayout.CENTER);
f.setVisible(true);
f.pack();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class Clock extends JPanel{
private final int DEFAULT_WIDTH =220;
private final int DEFAULT_HEIGHT =220;
private final int xCenter = DEFAULT_WIDTH/2;
private final int yCenter = DEFAULT_HEIGHT/2;
private final int RADIU = 100;
private static final long serialVersionUID = 1L;
private JLabel text;
DateFormat format;
public Clock(){
reTime();
text = new JLabel(" ");
text.setBounds(90, 50, 50, 10);
format = new SimpleDateFormat("HH:mm:ss");
this.setLayout(null);
this.add(text);
}
@Override
protected void paintComponent(Graphics g) {
// TODO Auto-generated method stub
super.paintComponent(g);
g.setColor(Color.RED);
// g.drawOval(0, 0, DEFAULT_WIDTH, DEFAULT_WIDTH);
g.fillOval(xCenter-2, yCenter-2, 4, 4);
double x,y;
for(int i=0;i<60;i++){
x = xCenter+RADIU*(Math.sin(i*Math.PI/30));
y = yCenter+RADIU*(-Math.cos(i*Math.PI/30));
if(i%5 ==0){
g.fillRect((int)(x-6/2), (int)(y-6/2), 6, 6);
}else{
g.fillRect((int)(x-4/2), (int)(y-4/2), 4, 4);
}
}
Calendar calendar = Calendar.getInstance();
int hour = calendar.get(Calendar.HOUR);//System.out.print(hour);
int min = calendar.get(Calendar.MINUTE);
int sec = calendar.get(Calendar.SECOND);
onDraw(g,hour,min,sec);
String str = format.format(new Date());
text.setText(str);
}
private void onDraw(Graphics g,int h,int m,int s){
double xH = xCenter+RADIU*(Math.sin(h*Math.PI/6+Math.PI*m/360))*0.6;
double yH = yCenter+RADIU*(-Math.cos(h*Math.PI/6+Math.PI*m/360))*0.6;
g.drawLine(xCenter, yCenter,(int)xH,(int)yH);
double xM = xCenter+RADIU*(Math.sin(m*Math.PI/30))*0.8;
double yM = yCenter+RADIU*(-Math.cos(m*Math.PI/30))*0.8;
g.drawLine(xCenter, yCenter,(int)xM,(int)yM);
double xS = xCenter+RADIU*(Math.sin(s*Math.PI/30))*0.9;
double yS = yCenter+RADIU*(-Math.cos(s*Math.PI/30))*0.9;
g.drawLine(xCenter, yCenter,(int)xS,(int)yS);
}
private void reTime(){
new Timer(200,new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
Clock.this.repaint();
}
}).start();
}
@Override
public Dimension getPreferredSize() {
// TODO Auto-generated method stub
return new Dimension(DEFAULT_WIDTH,DEFAULT_HEIGHT);
}
}
java 数字钟 需要安装elcipse
最新推荐文章于 2023-03-05 16:31:30 发布