Javaを使ってアナログ時計を作ろうと思います(ソース編③『役割ごとにメソッドに分けた+文字盤追加』)

先日UPしたソースはpaintConponentにまとめて記述していてしまったので、
役割ごとにメソッドに分けてみました。
それと、文字盤を追加しました(12等分)

package Clock;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Dimension;
import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;

import javax.swing.JFrame;
import javax.swing.JComponent;
import javax.swing.SwingUtilities;

@SuppressWarnings("serial")
public class Clock extends JComponent{

	public static void main(String[] args){
		Runnable myGUI = new Runnable(){
			public void run(){
				JFrame win = new JFrame("アナログ時計");
				Clock comp = new Clock();
				comp.setPreferredSize(new Dimension(500, 500));
				win.add(comp);
				win.pack();
				win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				win.setVisible(true);
			}
		};
		SwingUtilities.invokeLater(myGUI);
	}

	private static class MyTimer extends TimerTask{

		private Clock clock;
		public MyTimer(Clock clock) {
			this.clock = clock;
		}

		@Override
		public void run() {
			clock.repaint();
		}

	}

	public Clock(){
		Timer timer = new Timer();
		//timer.schedule(new MyTimer(this),0,500);
	
		timer.schedule(new TimerTask(){
			@Override
			public void run() {
				repaint();
			}},0,500);
	
	}

	@Override
	public void paintComponent(Graphics g){

		int second = 0;
		g.setColor(getBackground());

		Calendar cal = Calendar.getInstance();
		int hour = cal.get(Calendar.HOUR_OF_DAY); // 現在の時を取得
		int minute = cal.get(Calendar.MINUTE); // 現在の分を取得
		second = cal.get(Calendar.SECOND); // 現在の秒を取得

		mojiban(g);
		secLine(second,g);
		minuteLine(minute,second,g);
		hourLine(hour,minute,second,g);

	}
	
	public void mojiban(Graphics g){
		int width = getWidth();
		int height = getHeight();
		int centerX = width/2 ;
		int centerY = height/2;	
		double mojiX1;
		double mojiY1;
		double mojiX2;
		double mojiY2;
		for(int i=0;i<=11;i++){
			mojiX1 = (Math.sin(Math.toRadians(i * 30))) * 230;
			mojiY1 = -(Math.cos(Math.toRadians(i * 30))) * 230;
			mojiX2 = (Math.sin(Math.toRadians(i * 30))) * 245;
			mojiY2 = -(Math.cos(Math.toRadians(i * 30))) * 245;
			g.setColor(Color.BLACK);
			g.drawLine(centerX + (int)mojiX1, centerY + (int)mojiY1, centerX + (int)mojiX2 , centerY + (int)mojiY2);
		}
	}
	
	public void secLine(int second,Graphics g){
		int width = getWidth();
		int height = getHeight();
		int centerX = width/2 ;
		int centerY = height/2;
		double secX ;
		double secY ;
		secX = (Math.sin(Math.toRadians(second * 6))) * 220;
		secY = -(Math.cos(Math.toRadians(second * 6))) * 220;
		g.setColor(Color.BLACK);
		g.drawLine(centerX, centerY, centerX + (int) secX, centerY+ (int) secY);
	}

	public void minuteLine(int minute,int second,Graphics g){
		int width = getWidth();
		int height = getHeight();
		int centerX = width/2 ;
		int centerY = height/2;
		double minX ;
		double minY ;
		minX = (Math.sin(Math.toRadians(minute * 6 + (second * 6 / 60)))) * 180;
		minY = -(Math.cos(Math.toRadians(minute * 6 + (second * 6 / 60)))) * 180;
		g.setColor(Color.BLUE);
		g.drawLine(centerX, centerY, centerX + (int) minX, centerY+ (int) minY);
	}

	public void hourLine(int hour,int minute,int second,Graphics g){
		int width = getWidth();
		int height = getHeight();
		int centerX = width/2 ;
		int centerY = height/2;
		double hourX ;
		double hourY ;
		hourX = (Math.sin(Math.toRadians(hour * 30 + (minute * 30 / 60)
				+ (second * 30 / 3600)))) * 110;
		hourY = -(Math.cos(Math.toRadians(hour * 30 + (minute * 30 / 60)
				+ (second * 30 / 3600)))) * 110;
		g.setColor(Color.RED);
		g.drawLine(centerX, centerY, centerX + (int) hourX, centerY+ (int) hourY);
	}
	

}