package day01; |
import java.awt.BasicStroke; |
import java.awt.Color; |
import java.awt.Graphics; |
import java.awt.Graphics2D; |
import java.text.SimpleDateFormat; |
import java.util.Date; |
import javax.swing.JFrame; |
import javax.swing.JPanel; |
public class Clock { |
public static void main(String[] args) { |
// TODO Auto-generated method stub |
JFrame frame = new ClockFrame(); |
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); |
frame.setVisible( true ); |
} |
} |
|
class ClockFrame extends JFrame{ |
public ClockFrame(){ |
setTitle( "java clock" ); |
setBounds( 100 , 200 , 600 , 800 ); |
setVisible( true ); |
ClockPanel cp = new ClockPanel(); |
add(cp); |
} |
} |
|
|
class ClockPanel extends JPanel{ |
int h; |
int m; |
int s; |
int sx; |
int sy; |
int mx; |
int my; |
int hx; |
int hy; |
public ClockPanel() { |
move(); |
for ( int i= 0 ;i< 60 ;i++){ |
int r = 100 ; |
if (i% 5 == 0 ){ |
|
if (i% 15 == 0 ){ |
r= 120 ; |
|
} else { |
|
r= 140 ; |
|
} |
|
} |
|
int x1 = ( int )( 300 +Math.sin(Math.toRadians( 6 *i))*r); |
int y1 = ( int )( 300 -Math.cos(Math.toRadians(i* 6 ))*r); |
|
int x2 = ( int )( 300 +Math.sin(Math.toRadians( 6 *i))* 180 ); |
|
int y2 = ( int )( 300 -Math.cos(Math.toRadians(i* 6 ))* 180 ); |
|
} |
|
} |
|
public void paint(Graphics g ) { |
|
super .paint(g); |
|
setBackground(Color.LIGHT_GRAY); |
Graphics2D g2 = (Graphics2D) g; |
|
g2.drawString(h + ":" + m + ":" + s, 20 , 50 ); |
|
g2.setStroke( new BasicStroke( 5 )); |
|
g.setColor(Color.yellow); |
|
g.drawLine( 300 , 300 ,sx,sy); |
|
g.setColor(Color.red); |
|
g.drawLine( 300 , 300 ,mx,my); |
g.setColor(Color.gray); |
|
g.drawLine( 300 , 300 ,hx,hy); |
|
g.setColor(Color.orange); |
|
g.drawOval( 120 , 120 , 360 , 360 ); |
|
g.drawOval( 205 , 205 , 190 , 190 ); |
|
g.setColor(Color.black); |
|
g.fillOval( 292 , 292 , 15 , 15 ); |
|
|
for ( int i= 0 ;i< 60 ;i++){ |
|
int r = 100 ; |
if (i% 5 == 0 ){ |
|
if (i% 15 == 0 ){ |
|
r= 120 ; |
|
} else { |
r= 140 ; |
|
} |
} |
|
int x1 = ( int )( 300 +Math.sin(Math.toRadians( 6 *i))*r); |
|
int y1 = ( int )( 300 -Math.cos(Math.toRadians(i* 6 ))*r); |
|
int x2 = ( int )( 300 +Math.sin(Math.toRadians( 6 *i))* 180 ); |
|
int y2 = ( int )( 300 -Math.cos(Math.toRadians(i* 6 ))* 180 ); |
|
g.setColor(Color.green); |
|
g.drawLine(x1,y1,x2,y2); |
|
} |
|
} |
public void move() { |
|
new Thread() { |
|
public void run() { |
|
while ( true ) { |
|
Date d = new Date(); |
|
System.out.println(d); |
|
SimpleDateFormat ss = new SimpleDateFormat( "ss" ); |
|
SimpleDateFormat mm = new SimpleDateFormat( "mm" ); |
|
SimpleDateFormat hh = new SimpleDateFormat( "HH" ); |
|
s = Integer.parseInt(ss.format(d)); |
|
m = Integer.parseInt(mm.format(d)); |
h = Integer.parseInt(hh.format(d)); |
sx = ( int ) ( 300 + Math.sin(Math.toRadians( 6 * s)) * 150 ); |
|
sy = ( int ) ( 300 - Math.cos(Math.toRadians( 6 * s)) * 150 ); |
|
mx = ( int ) ( 300 + Math.sin(Math.toRadians( 6 * m)) * 120 ); |
my = ( int ) ( 300 - Math.cos(Math.toRadians( 6 * m)) * 120 ); |
|
hx = ( int ) ( 300 + Math.sin(Math.toRadians(h * 30 + m * 0.5 )) * 90 ); |
|
hy = ( int ) ( 300 - Math.cos(Math.toRadians(h * 30 + m * 0.5 )) * 90 ); |
|
repaint(); |
|
try { |
|
Thread.sleep( 1000 ); |
|
} catch (InterruptedException e) { |
|
e.printStackTrace(); |
|
} |
} |
} |
|
}.start(); |
} |
} |
初级程序员
by: 虾仔 发表于:2018-05-11 14:37:50 顶(0) | 踩(0) 回复
6666 唯一美中不足的就是分针得在秒针跑一圈才跳
回复评论