hms.java

来自「一个applet的时钟程序,有删改,基本实现从本地读取时间并用小程序运行.」· Java 代码 · 共 60 行

JAVA
60
字号
package clock;

import java.awt.*;
import java.applet.*;
import java.util.*;
import java.net.*;

class Hms extends Date {
	public Hms(double localOffset) { // 如果HTML文件中设置了时区,则把时间设为当地时区时间
		super();
		long tzOffset = getTimezoneOffset() * 60L * 1000L;
		localOffset *= 3600000.0;
		setTime(getTime() + tzOffset + (long) localOffset);
	}

	public Hms() { // 如果没有设置时区,则就使用当地的时间
		super();
	}

	public double get_hours() // 时间换算,把如5:30这样的时间换算成5.5
	{
		return (double) super.getHours() + (double) getMinutes() / 60.0;
	}
}

abstract class ClockHand // 抽象类,提供时针、分针、秒针类使用
{
	protected int baseX[], baseY[];

	protected int transX[], transY[];

	protected int numberOfPoints;

	public ClockHand(int originX, int originY, int length, int thickness,
			int points) {
		baseX = new int[points];
		baseY = new int[points];
		transX = new int[points];
		transY = new int[points];
		initiallizePoints(originX, originY, length, thickness);
		numberOfPoints = points;
	}

	abstract protected void initiallizePoints(int originX, int originY,
			int length, int thickness);

	abstract public void draw(Color color, double angle, Graphics g);

	protected void transform(double angle) // 通过角度计算出时针、分针、秒针的绘制位置
	{
		for (int i = 0; i < numberOfPoints; i++) {
			transX[i] = (int) ((baseX[0] - baseX[i]) * Math.cos(angle)
					- (baseY[0] - baseY[i]) * Math.sin(angle) + baseX[0]);

			transY[i] = (int) ((baseX[0] - baseX[i]) * Math.sin(angle)
					+ (baseY[0] - baseY[i]) * Math.cos(angle) + baseY[0]);
		}
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?