时钟表盘代码
来源:互联网 发布:数据质量管理规范 编辑:程序博客网 时间:2024/04/26 20:35
package timer.com.cn;
import javax.swing.*; //时钟
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.*;
import java.util.Calendar;
import java.util.GregorianCalendar;
class Clock extends JFrame implements ActionListener {
int x, y, x0, y0, r, h, olds_x, olds_y, oldm_x, oldm_y, oldh_x, oldh_y, ss,
mm, hh, old_m, old_h, ang;
final double RAD = Math.PI / 180; // 度数转换成弧度的比例
// 构造函数创建了一个窗体
public Clock() {
super("时钟"); // 设置标题
setSize(250, 250); // 设置窗口尺寸
setBackground(Color.WHITE); // 设置背景颜色
setLocation(300, 150); // 设置窗口位置坐标
setResizable(false); // 使窗口可以最小化和关闭,但是不能任意改变大小
setVisible(true); // 设置组建可见
int delay = 100; // 设置延时
// 创建一个监听事件
ActionListener drawClock = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
repaint();
}
};
new Timer(delay, drawClock).start(); // 创建时间计数器,每秒触发一次
}
public void actionPerformed(ActionEvent e) {// 实现ActionListener接口必须实现的方法}
} // 绘制图形
public void paint(Graphics g) {
Graphics2D g2D = (Graphics2D) g;
Insets insets = getInsets();
int L = insets.left / 2, T = insets.top / 2;
h = getSize().height;
g.setColor(Color.black);
// 画圆
g2D.setStroke(new BasicStroke(4.0f));
g.drawOval(L + 40, T + 40, h - 80, h - 80);
r = h / 2 - 40;
x0 = 40 + r - 5 + L;
y0 = 40 + r - 5 - T;
ang = 60;
// 绘制时钟上的12个数字
for (int i = 1; i <= 12; i++) {
x = (int) ((r - 9) * Math.cos(RAD * ang) + x0);
y = (int) ((r - 9) * Math.sin(RAD * ang) + y0);
g.drawString("" + i, x, h - y);
ang -= 30;
}
// 获得当前系统时间
Calendar now = new GregorianCalendar();
int nowh = now.get(Calendar.HOUR_OF_DAY);
int nowm = now.get(Calendar.MINUTE);
int nows = now.get(Calendar.SECOND);
String st;
if (nowh < 10)
st = "0" + nowh;
else
st = "" + nowh;
if (nowm < 10)
st += ":0" + nowm;
else
st += ":" + nowm;
if (nows < 10)
st += ":0" + nows;
else
st += ":" + nows;
// 在窗体上显示时间
g.setColor(Color.white);//
g.fillRect(L, T, 50, 28);//
g.setColor(Color.black);//
g.drawString(st, L + 2, T + 26);//
// 计算时间与度数的关系
ss = 90 - nows * 6;
mm = 90 - nowm * 6;
hh = 90 - nowh * 30 - nowm / 2;
x0 = r + 40 + L;
y0 = r + 40 + T;
g2D.setStroke(new BasicStroke(1.0f));// 秒针粗细
// 擦除秒针
if (olds_x > 0) {
g.setColor(getBackground());
g.drawLine(x0, y0, olds_x, h - olds_y);
} else {
old_m = mm;
old_h = hh;
}
// 绘制秒针
x = (int) (r * 0.9 * Math.cos(RAD * ss)) + x0;// 长度
y = (int) (r * 0.9 * Math.sin(RAD * ss)) + y0 - 2 * T;
g.setColor(Color.black);// 指针颜色
g.drawLine(x0, y0, x, h - y);// 轨迹
olds_x = x;
olds_y = y;
g2D.setStroke(new BasicStroke(2.2f));// 分针粗细
// 擦除分针
if (old_m != mm) {
g.setColor(getBackground());
g.drawLine(x0, y0, oldm_x, h - oldm_y);
}
// 绘制分针
x = (int) (r * 0.7 * Math.cos(RAD * mm)) + x0;// 长度
y = (int) (r * 0.7 * Math.sin(RAD * mm)) + y0 - 2 * T;
g.setColor(Color.red);// 颜色
g.drawLine(x0, y0, x, h - y);
oldm_x = x;
oldm_y = y;
old_m = mm;
g2D.setStroke(new BasicStroke(3.4f));// 时针粗细
// 擦除时针
if (old_h != hh) {
g.setColor(getBackground());
g.drawLine(x0, y0, oldh_x, h - oldh_y);
}
// 绘制时针
x = (int) (r * 0.5 * Math.cos(RAD * hh)) + x0;// 长度
y = (int) (r * 0.5 * Math.sin(RAD * hh)) + y0 - 2 * T;
g.setColor(Color.red);// 颜色
g.drawLine(x0, y0, x, h - y);
oldh_x = x;
oldh_y = y;
old_h = hh;
}
public static void main(String[] args) {
Clock c = new Clock();
}
}
- 时钟表盘代码
- 时钟表盘代码
- 手机时钟(加了表盘)代码
- 图形界面 时钟表盘
- CSS3简易表盘时钟
- 绘制模拟Android钟 ####时钟表盘
- Js版带表盘的时钟
- 自定义时钟View,表盘的绘制
- android studio 绘制时钟刻度表盘的虚拟动画。
- 简单的自定义View——表盘时钟
- android 利用环形菜单制作带数字表盘的时钟
- Java时钟(实现扫秒及表盘替换)
- 利用canvas.save()、canvas.restore()、canvas.translate()、canvas.rotate()绘制一个时钟表盘
- js时钟代码发布
- 一个时钟的代码
- flash时钟代码
- 数字时钟(代码)
- js模拟时钟代码
- BS架构与CS架构的区别
- Oracle预定义的21个系统异常类型
- 比你二十年工资还重要的三句话
- NSPredicate笔记
- 功能函数整理(2)
- 时钟表盘代码
- 无非奔波而已
- 《富爸爸、穷爸爸》
- 如何有效实现软件的需求管理 - 2
- 时钟表盘代码
- android view构造函数研究
- 动态规划 最长不重复连续子串
- LVM逻辑卷分区笔记
- Struts2的工作机制及分析