package com.a.a;

import java.awt.*;
import javax.swing.*;
import java.util.*;

public class StillClock extends JPanel
{
	private int hour;
	private int minute;
	private int second;

	public StillClock()
	{
		setCurrentTime();
	}

	/** Construct a clock with specified hour, minute, and second */
	public StillClock(int hour, int minute, int second)
	{
		this.hour = hour;
		this.minute = minute;
		this.second = second;
	}

	/** Return hour */
	public int getHour()
	{
		return hour;
	}

	/** Set a new hour */
	public void setHour(int hour)
	{
		this.hour = hour;
		repaint();
	}

	/** Return minute */
	public int getMinute()
	{
		return minute;
	}

	/** Set a new minute */
	public void setMinute(int minute)
	{
		this.minute = minute;
		repaint();
	}

	/** Return second */
	public int getSecond()
	{
		return second;
	}

	/** Set a new second */
	public void setSecond(int second)
	{
		this.second = second;
		repaint();
	}

	/** Draw the clock */
	protected void paintComponent(Graphics g)
	{
		super.paintComponent(g);

		// Initialize clock parameters
		int clockRadius = (int) (Math.min(getWidth(), getHeight()) * 0.8 * 0.5);
		int xCenter = getWidth() / 2;
		int yCenter = getHeight() / 2;

		// Draw circle
		g.setColor(Color.black);
		g.drawOval(xCenter - clockRadius, yCenter - clockRadius,
				2 * clockRadius, 2 * clockRadius);
		g.drawString("12", xCenter - 5, yCenter - clockRadius + 12);
		g.drawString("9", xCenter - clockRadius + 3, yCenter + 5);
		g.drawString("3", xCenter + clockRadius - 10, yCenter + 3);
		g.drawString("6", xCenter - 3, yCenter + clockRadius - 3);

		// Draw second hand
		int sLength = (int) (clockRadius * 0.8);
		int xSecond = (int) (xCenter + sLength
				* Math.sin(second * (2 * Math.PI / 60)));
		int ySecond = (int) (yCenter - sLength
				* Math.cos(second * (2 * Math.PI / 60)));
		g.setColor(Color.red);
		g.drawLine(xCenter, yCenter, xSecond, ySecond);

		// Draw minute hand
		int mLength = (int) (clockRadius * 0.65);
		int xMinute = (int) (xCenter + mLength
				* Math.sin(minute * (2 * Math.PI / 60)));
		int yMinute = (int) (yCenter - mLength
				* Math.cos(minute * (2 * Math.PI / 60)));
		g.setColor(Color.blue);
		g.drawLine(xCenter, yCenter, xMinute, yMinute);

		// Draw hour hand
		int hLength = (int) (clockRadius * 0.5);
		int xHour = (int) (xCenter + hLength
				* Math.sin((hour % 12 + minute / 60.0) * (2 * Math.PI / 12)));
		int yHour = (int) (yCenter - hLength
				* Math.cos((hour % 12 + minute / 60.0) * (2 * Math.PI / 12)));
		g.setColor(Color.BLACK);
		g.drawLine(xCenter, yCenter, xHour, yHour);
	}

	public void setCurrentTime()
	{
		// Construct a calendar for the current date and time
		Calendar calendar = new GregorianCalendar();

		// Set current hour, minute and second
		this.hour = calendar.get(Calendar.HOUR_OF_DAY);
		this.minute = calendar.get(Calendar.MINUTE);
		this.second = calendar.get(Calendar.SECOND);
	}

	public Dimension getPreferredSize()
	{
		return new Dimension(200, 200);
	}
}
最近下载更多
刘晨娜 LV17月24日
星星
15966848095 LV161月12日
太阳
wenxiaozhong LV12019年12月18日
星星
如风太过分人 LV12019年12月17日
星星
yongzheng132 LV172019年6月21日
太阳星星
李逸荨 LV102019年6月17日
月亮月亮星星星星
Dav1d7 LV22019年3月11日
星星星星
HBXXXXX LV92019年1月3日
月亮月亮星星
对阿对阿 LV12018年10月30日
星星
xieyuan0553 LV162018年9月21日
太阳
最近浏览更多
675104182 LV129月21日
月亮月亮月亮
zxx1991 LV28月7日
星星星星
刘晨娜 LV17月24日
星星
1113783182 LV17月2日
星星
tomato_patato LV26月19日
星星星星
1872615558 LV116月1日
月亮月亮星星星星星星
Clista5月11日
暂无贡献等级
duxiuhui4月29日
暂无贡献等级
335261607 LV14月13日
星星
木木coco LV74月13日
月亮星星星星星星
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友