아날로그 시계(AWT)

|
 


import java.awt.*;
import java.awt.event.*;
import java.util.*;


class Clocklee extends Frame implements Runnable
{

 int x,y,width,heigh,sx,sy,mx,my,hx,hy,centerX,centerY;
 

 Clocklee()
 {
   setSize(250,250);
   setVisible(true);
   
   addWindowListener(new WindowAdapter()
    {
     public void windowClosing(WindowEvent e)
     {
      System.exit(0);
     }
    });
 }



 public void paint(Graphics g)
 {
  // 현재 시간을 얻어온다.

  Calendar cal = Calendar.getInstance();
  int second = cal.get(Calendar.SECOND);
  int minute = cal.get(Calendar.MINUTE);
  int hour = cal.get(Calendar.HOUR);
               
 

  x= 20; y=40; width=200; heigh = 200;      // 원의 좌표와 크기
  g.drawOval(x,y, width, heigh);
 
 

  int r=100;                    // 반지름
  centerX = x+width/2;     //중심점
  centerY = y+heigh/2;
 

///// 숫자를 그린다 /////
  g.setFont(new Font("시스템",Font.BOLD,18));
  g.setColor(Color.DARK_GRAY);
 

  for(int i=1; i<=12; i++)
  {
     int strx = centerX + (int)((r-8)*Math.cos(Math.PI/2 - i*(Math.PI/6)));
     int stry = centerY - (int)((r-8)*Math.sin(Math.PI/2 - i*(Math.PI/6)));
                 
     g.drawString(""+i,strx-5,stry+5);
  }


///// 초침의 x,y좌표를 구하여 그린다 /////
     sx = centerX + (int)((r-10)*Math.cos(Math.PI/2 - second*(Math.PI/30)));
     sy = centerY - (int)((r-10)*Math.sin(Math.PI/2 - second*(Math.PI/30)));

     g.setColor(Color.red);
     g.drawLine(centerX,centerY, sx, sy);
               

///// 분침의 x,y좌표를 구하여 그린다 /////
     mx = centerX + (int)((r-20)*Math.cos(Math.PI/2 - minute*(Math.PI/30)));
     my = centerY - (int)((r-20)*Math.sin(Math.PI/2 - minute*(Math.PI/30)));

     g.setColor(Color.green);
     g.drawLine(centerX,centerY, mx, my);

///// 시침의 x,y좌표를 구하여 그린다 /////
     hx = centerX + (int)((r-40)*Math.cos(Math.PI/2 - ((hour*60+minute)/10)

            * (Math.PI/36)));
     hy = centerY - (int)((r-40)*Math.sin(Math.PI/2 - ((hour*60+minute)/10)

            *(Math.PI/36)));

     g.setColor(Color.blue);
     g.drawLine(centerX,centerY, hx, hy);

 }
 

 public void run()   // 1초에 한번씩 paint메소드 호출
 {
  while(true)
  {
       try
        {
             Thread.sleep(1000);
         }
       catch(InterruptedException e)
        {
         }
                       
       repaint();
  }
 }
 
 

public static void main(String[] args)
 {
   Clocklee clock = new Clocklee();
   Thread t = new Thread(clock);
   t.start();
 
 }
}


'JAVA/JSP > Source' 카테고리의 다른 글

Thread  (0) 2008.07.14
Graphics(clipRect())  (0) 2008.07.14
JCheckBox/ JRadioButton /JComboBox/ JTable  (0) 2008.07.14
야구게임  (0) 2008.07.14
개미 수열  (0) 2008.07.14
And