本文实例为大家分享了java实现时钟效果的具体代码,供大家参考,具体内容如下

实现效果如图:

Java代码:

文件一:ClockPanel.java

import static java.util.Calendar.HOUR;

import static java.util.Calendar.MILLISECOND;

import static java.util.Calendar.MINUTE;

import static java.util.Calendar.SECOND;

import java.awt.BasicStroke;

import java.awt.Color;

import java.awt.Dimension;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.util.Calendar;

import javax.swing.ImageIcon;

import javax.swing.JPanel;

/**

* 时钟面板

*

* @author 听说你很会玩

*/

@SuppressWarnings("serial")

public class ClockPanel extends JPanel {

// 3个指针的粗细

private static final BasicStroke HOURS_POINT_WIDTH = new BasicStroke(4);

private static final BasicStroke MINUETES_POINT_WIDTH = new BasicStroke(3);

private static final BasicStroke SEC_POINT_WIDTH = new BasicStroke(2);

ImageIcon background;// 背景图片对象

private int centerX;// 中心坐标

private int centerY;// 中心坐标

private final static int secLen = 60; // 指针长度

private final static int minuesLen = 55; // 指针长度

private final static int hoursLen = 36; // 指针长度

/**

* 构造方法

*/

public ClockPanel() {

setToolTipText("小键盘+、-调整透明度,Crtl+Shift+X退出");// 提示信息

setOpaque(false);

background = new ImageIcon(getClass().getResource("clock.jpg"));// 加载图片

int iconWidth = background.getIconWidth();// 获取图片大小

centerX = iconWidth / 2;// 获取图片中间坐标

int iconHeight = background.getIconHeight();

centerY = iconHeight / 2;// 获取图片中间坐标

setPreferredSize(new Dimension(iconWidth, iconHeight));

}

@Override

public void paint(Graphics g) {// 重写父类方法

Graphics2D g2 = (Graphics2D) g;

g2.drawImage(background.getImage(), 0, 0, this);// 绘制背景图片

Calendar calendar = Calendar.getInstance();// 获取日历对象

int millisecond = calendar.get(MILLISECOND);// 获取毫秒值

int sec = calendar.get(SECOND);// 获取秒值

int minutes = calendar.get(MINUTE);// 获取分值

int hours = calendar.get(HOUR);// 获取时值

double secAngle = (60 - sec) * 6 - (millisecond / 150); // 秒针角度

int minutesAngle = (60 - minutes) * 6;// 分针角度

int hoursAngle = (12 - hours) * 360 / 12 - (minutes / 2);// 时针角度

// 计算秒针、分针、时针指向的坐标

int secX = (int) (secLen * Math.sin(Math.toRadians(secAngle)));// 秒针指向点的X坐标

int secY = (int) (secLen * Math.cos(Math.toRadians(secAngle))); // 秒针指向点的Y坐标

int minutesX = (int) (minuesLen * Math

.sin(Math.toRadians(minutesAngle))); // 分针指向点的X坐标

int minutesY = (int) (minuesLen * Math

.cos(Math.toRadians(minutesAngle))); // 分针指向点的Y坐标

int hoursX = (int) (hoursLen * Math.sin(Math.toRadians(hoursAngle))); // 时针指向点的X坐标

int hoursY = (int) (hoursLen * Math.cos(Math.toRadians(hoursAngle))); // 时针指向点的Y坐标

// 分别绘制时针、分针、秒针

g2.setStroke(HOURS_POINT_WIDTH);// 设置时针的宽度

g2.setColor(Color.BLACK);// 设置时针的颜色

g2.drawLine(centerX, centerY, centerX - hoursX, centerY - hoursY);// 绘制时针

g2.setStroke(MINUETES_POINT_WIDTH);// 设置分针的宽度

if (minutesAngle != hoursAngle) // 分针、时针重叠变色

g2.setColor(new Color(0x2F2F2F));// 设置未重叠时的颜色

else {

g2.setColor(Color.GREEN);// 设置重叠时的颜色

}

g2.drawLine(centerX, centerY, centerX - minutesX, centerY - minutesY);// 绘制分针

g2.setStroke(SEC_POINT_WIDTH);// 设置秒针的宽度

if (secAngle != hoursAngle && secAngle != minutesAngle)// 分针、时针、秒针重叠变色

g2.setColor(Color.ORANGE);// 设置未重叠时的颜色

else {

g2.setColor(Color.GREEN);// 设置重叠时的颜色

}

// 绘制3个指针的中心圆和秒针

g2.fillOval(centerX - 5, centerY - 5, 10, 10);// 绘制中心圆

g2.drawLine(centerX, centerY, centerX - secX, centerY - secY);// 绘制秒针

g2.drawLine(centerX + 1, centerY + 1, centerX - secX + 1, centerY

- secY + 1);// 绘制秒针

}

}

java时钟时针绘制代码_java实现时钟效果相关推荐

  1. java时钟时针绘制代码,Java实现动态模拟时钟

    搜索热词 本文实例为大家分享了java动态模拟时钟的具体代码,供大家参考,具体内容如下 应用名称:java动态模拟时钟 用到的知识:javaGUI,java 绘图 开发环境:win10+eclipse ...

  2. IC数字常见问题(五)跨时钟域的代码检查和跨时钟的综合处理

    跨时钟域的代码检查(spyglass) lint (在RTL阶段对代码的语法,可综合性,结构进行深入分析,并且对代码的错误提供完整.可调试的修改方案) SDC(帮助设计人员在设计的整个流程中生成,验证 ...

  3. java主窗体设计代码_java窗体设计+GUI经典代码全放送

    [实例简介] java窗体设计经典代码,手把手叫你如何设计java窗体,编写应用程序. [实例截图] [核心代码] 57641e3b-d82c-4f28-bb29-35f951c1158d └── j ...

  4. java我的世界代码_JAVA玩转我的世界(MineCraft)

    我的世界MC(minecraft)是一款使用java开发开源的游戏,高自由度的沙盒游戏,游戏最早于2009年5月13日上线首个版本.<Minecraft>以让每一个玩家在三维空间中自由地创 ...

  5. java继承矩形例子代码_Java代码实现矩形覆盖实例

    Java代码实现矩形覆盖实例 题目 我们可以用2×1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2×1的小矩形无重叠地覆盖一个2×n的大矩形,总共有多少种方法? 程序核心思想 2*(n-1)的方块 ...

  6. java结束全部操作代码_Java创建与结束线程代码示例

    这篇文章主要介绍了Java创建与结束线程代码示例,小编觉得挺不错的,这里分享给大家,供需要的朋友参考. 本文讲述了在Java中如何创建和结束线程的最基本方法,只针对于Java初学者.一些高级知识如线程 ...

  7. java http 下载网页代码_Java下http下载文件客户端和上传文件客户端实例代码

    Java下http下载文件客户端和上传文件客户端实例代码 发布于 2021-1-14| 复制链接 摘记: 一.下载客户端代码 ```java package javadownload; import ...

  8. java wed登录面 代码_java web 登录界面

    JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标 ...

  9. java wed登录面 代码_Java Web用户登录实例代码

    实现功能: 1.用户登陆.注销 2.利用session记录用户登陆信息 3.在JSP中展示已登陆用户信息 实现原理: 登陆后通过判断用户名和密码是否和存储的一致,如果一致,就把用户信息放到sessio ...

  10. java全面的计算器代码_Java实现计算器的代码

    用java 实现的计算器,原理看代码注释,具体内容如下 public class mycalculator { public static void main(string[] args) { str ...

最新文章

  1. 浙大绘制首个地球微生物“社会关系”网络
  2. AndroidStudio导入项目一直卡在Building gradle project info最快速解决方案
  3. reactjs高阶函数和函数柯里化
  4. C语言atoi函数的用法
  5. vuex commit 传参数,传递多个参数
  6. 找不同颜色小游戏html源码,Javascript实现找不同色块的游戏
  7. Google 最强开源模型 BERT 在 NLP 中的应用 | 技术头条
  8. JsBarcode 安装、使用、生成条形码的容器 及 参数配置options。 还存在的问题:条形码总体的宽度设置问题
  9. 五分钟学会做一个在线抽奖系统,手把手教你抽奖还学不会嘛?
  10. wx.login 和 wx.getUserProfile 同时使用问题
  11. Word转换PDF的三种方法使用教程
  12. GTK构件之杂项构件
  13. Linux 磁盘动态扩容 PVM(转载)
  14. 数据分析师必备思维——矩阵思维
  15. 上海交大PMP——职场妈妈的学习干货分享
  16. 【华为机试真题Java】从入门到入职-真题列表导读
  17. 李笑来python自学_自学是门手艺--李笑来
  18. No module named ‘torchvision.models.feature_extraction‘
  19. snmptrap 命令解析
  20. l2接口下单怎么获取交易数据?

热门文章

  1. Ubuntu-图形界面和字符界面切换快捷键
  2. 系统集成项目管理工程师证有什么用处?
  3. 最新详细VMware虚拟机下载与安装
  4. 人民币兑换菲律宾比索去哪些银行?
  5. Word插入脚注只占左下角一栏的方法
  6. 【苹果鼠标滑轮失灵】解决办法
  7. 罗永浩怒怼新浪科技,或将起诉
  8. 计算机证书都需要哪些知识,计算机资格证书有哪些计算机专业证书有哪些
  9. 大数据思维的核心是什么?
  10. 中文现代诗歌创作项目