Alog2.java

//import java.awt.*;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import java.util.Calendar;

public class Alog2 extends JFrame {
    final int f_width = 400;
    final int f_height = 430;
    final int r = 180;
    final int x_0 = 20;
    final int y_0 = 40;
    final int x_c = x_0+r+1;
    final int y_c = y_0+r+1;

    public Alog2() {
        super("アナログ時計");
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       
        this.setSize(f_width, f_height);
        this.setVisible(true);
       
        java.util.TimerTask task = new java.util.TimerTask() {
            public void run() {
                repaint();        //一秒ごとに再描画
            }
        };
            java.util.Timer timer = new java.util.Timer();
        timer.schedule(task, 0L, 1000L);
    }

    public void paint(Graphics g){
        //背景の描画
        g.setColor(Color.white);
        g.fillRect(0, 0, f_width, f_height);
       
        //時計の描画
        g.setColor(Color.green);
        g.drawOval(x_0, y_0, r*2+1, r*2+1);
        g.fillRect(x_c-4, y_c-4, 9, 9);
        for(int i=-84, j=1; i<=270; i+=6){
            g.setColor(Color.green);
            double x=r*Math.cos(Math.toRadians(i));
            double y=r*Math.sin(Math.toRadians(i));
            if(i%30==0){
                double x2=(r-15)*Math.cos(Math.toRadians(i));
                double y2=(r-15)*Math.sin(Math.toRadians(i));
                g.drawLine(x_c+(int)x, y_c+(int)y, x_c+(int)x2, y_c+(int)y2);
                double x3=(r-25)*Math.cos(Math.toRadians(i));
                double y3=(r-25)*Math.sin(Math.toRadians(i));
                g.setColor(Color.magenta);
                g.drawString(""+j, x_c+(int)x3-5, y_c+(int)y3+5);
                j++;
            }else{
                double x2=(r-7)*Math.cos(Math.toRadians(i));
                double y2=(r-7)*Math.sin(Math.toRadians(i));
                g.drawLine(x_c+(int)x, y_c+(int)y, x_c+(int)x2, y_c+(int)y2);
            }
        }
       
        //針の描画
        Calendar time = Calendar.getInstance();
        int s = time.get(time.SECOND)*6-90;        //秒針の角度
        int sl = r-15;                            //秒針の長さ
        double slx = sl*Math.cos(Math.toRadians(s));
        double sly = sl*Math.sin(Math.toRadians(s));
        g.setColor(Color.pink);
        g.drawLine(x_c, y_c, x_c+(int)slx, y_c+(int)sly);
       


    }

    public static void main(String args[]){
        new Alog2();
    }
}

 

 

 

最終更新:2013年01月16日 14:05
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。