- 浏览: 952150 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (383)
- JSP 自定义标签实现 (1)
- JSP (2)
- javascript (161)
- JAVA (100)
- HTML (26)
- jQuery (11)
- J2EE (1)
- Log4J (1)
- HTML5 (6)
- DB2 (2)
- Spring (14)
- 浏览器兼容 (1)
- JavaMail (1)
- JAVA(转载) (1)
- freemarker (1)
- 项目管理 (1)
- 项目架构学习 (1)
- Oracle (11)
- 开源项目 (2)
- 网络编程 (4)
- C (1)
- C++ (0)
- Xpath (1)
- 待写 (10)
- JXL (1)
- XML (1)
- JNDI (2)
- POI (8)
- Struts2 (3)
- 异常解决方法 (1)
- Sql Server (2)
- windows (2)
- SqlServer (1)
- 前端 (1)
- 正则表达式 (2)
- 浏览器兼容问题 (2)
- 转载 (25)
- css (11)
- svn (5)
- 工程构建 (1)
- 好用的网站 (1)
- sql (3)
- chrome V8 (1)
- javacript 报表 (1)
- FusionCharts (1)
- eclipse (2)
- tomcat (4)
- hibernate (2)
- 硬件 (1)
- 杂烩 (1)
- Linux (1)
- ubuntu (1)
- 设计模式 (2)
- 缓存 (1)
- 数据库 (1)
- JVM (2)
- DOM4j (1)
- 其他 (1)
- JACOB (1)
- extjs (3)
- ligerUi (1)
- 在线HTML编辑器 (1)
- API (1)
- OpenOffice (1)
- webservice (1)
- json (1)
- 百度map (1)
- NodeJs (1)
- greeplum jdbc spring (1)
- easyui (1)
- hightchart (1)
- 游戏 (1)
- HttpClient (1)
- 正则 (1)
- canvas (4)
- HTML5,javascript,canvas (0)
最新评论
-
changelo:
缺少了秦皇岛市
中国省,市,区 json数据 -
yurui829:
解析配置行那等号前后有可能有空格,改为如下比较好:String ...
java 读取.ini配置文件工具类 -
贝塔ZQ:
poi生成excel文档,感觉蛮复杂的,可以试试用pageof ...
POI生成excel带下拉 -
langke93:
我发现greenplum 通过jdbc insert性能很差, ...
jdbc 配置连接greeplum数据,spring配置连接greeplum数据(简单配置学习) -
zhutulang:
哪有收邮件???
Spring 邮件接收发送实例
package com.file; import java.awt.*; import java.applet.*; import java.util.*; //操作运用多线程实现一个钟表的类 public class TextClock extends Applet implements Runnable { Thread HOUR_THREAD = null;// 表示时针的线程 Thread MINUTE_THREAD = null;// 表示分针的线程 Thread SECOND_THREAD = null;// 表示秒针的线程 int hour_a, hour_b, minute_a, minute_b, second_a, second_b;// 表示时针,分针,秒针端点的整型变量 int current_hour = 0;// 获取当前的时整数变量 int current_minute = 0;// 获取当前的分整数变量 int current_second = 0;// 获取当前的秒整数变量 Graphics second_graphics = null;// 绘制秒针的Graphics对象 Graphics minute_graphics = null;// 绘制分针的Graphics对象 Graphics hour_graphics = null;// 绘制时针的Graphics对象 double point_x[] = new double[61];// 存放表盘刻度的X轴数组 double point_y[] = new double[61];// 存放表盘刻度的Y轴数组 double scan_x[] = new double[61];// 供绘制表盘使用 double scan_y[] = new double[61]; int isStart = 0;// 判断是否重新开始 public void init() {// 数据初始化 hour_graphics = this.getGraphics();// 实例化时针Graphics对象 hour_graphics.setColor(Color.black);// 设置时针的颜色 hour_graphics.translate(200, 200);// 进行坐标系统变换,原点设在(200,200)处 minute_graphics = this.getGraphics();// 实例化分针Graphics对象 minute_graphics.setColor(Color.blue);// 设置分针的颜色 minute_graphics.translate(200, 200);// 进行坐标系统变换,原点设在(200,200)处 second_graphics = this.getGraphics();// 实例化秒针Graphics对象 second_graphics.setColor(Color.RED);// 设置秒针的颜色 second_graphics.translate(200, 200);// 进行坐标系统变换,原点设在(200,200)处 point_x[0] = 0; point_y[0] = -120;// 各个时针12点处的位置坐标(按新坐标系的坐标) scan_x[0] = 0; scan_y[0] = -140;// 12点处的刻度位置坐标(按新坐标系的坐标) double jiaodu = 6 * Math.PI / 180; for (int i = 0; i < 60; i++) {// 表盘分割成60分,将分割点的坐标存放在数组中 point_x[i + 1] = point_x[i] * Math.cos(jiaodu) - Math.sin(jiaodu) * point_y[i]; point_y[i + 1] = point_y[i] * Math.cos(jiaodu) + point_x[i] * Math.sin(jiaodu); } point_x[60] = 0; point_y[60] = -120; for (int i = 0; i < 60; i++) {// 表盘分割成60分,将分割点的坐标存放在绘制数组中 scan_x[i + 1] = scan_x[i] * Math.cos(jiaodu) - Math.sin(jiaodu) * scan_y[i]; scan_y[i + 1] = scan_y[i] * Math.cos(jiaodu) + Math.sin(jiaodu) * scan_x[i]; } scan_x[60] = 0; scan_y[60] = -140; } public void start() { if (isStart >= 1) { SECOND_THREAD.interrupt();// 唤醒线程 MINUTE_THREAD.interrupt(); HOUR_THREAD.interrupt(); } HOUR_THREAD = new Thread(this);// 创建时针线程 MINUTE_THREAD = new Thread(this);// 创建分针线程 SECOND_THREAD = new Thread(this);// 创建秒针线程 SECOND_THREAD.start();// 启动秒针线程 MINUTE_THREAD.start();// 启动分针线程 HOUR_THREAD.start();// 启动时针线程 isStart++; if (isStart >= 2) isStart = 1; } public void stop() { SECOND_THREAD.interrupt();// 唤醒线程 MINUTE_THREAD.interrupt();// 唤醒线程 HOUR_THREAD.interrupt();// 唤醒线程 } public void paint(Graphics g) {// 绘制图形 this.start(); g.drawOval(50, 50, 300, 300);// 表盘的外圈 g.translate(200, 200);// 进行坐标系统变换 for (int i = 0; i < 60; i++) {// 绘制表盘的小刻度和大刻度 if (i % 5 == 0) { g.setColor(Color.BLACK);// 设置颜色 g.fillOval((int) scan_x[i], (int) scan_y[i], 10, 10); } else g.fillOval((int) scan_x[i], (int) scan_y[i], 5, 5); } } public void run() {// 实现Thread的方法,开始线程 Date date = new Date();// 获取本地时间 String s = date.toString(); current_hour = Integer.parseInt(s.substring(11, 13));// 获得当前时间的小时 current_minute = Integer.parseInt(s.substring(14, 16));// 获取当前时间的分钟 current_second = Integer.parseInt(s.substring(17, 19));// 获取当前时间的秒钟 if (Thread.currentThread() == SECOND_THREAD) {// 如果当前线程是秒线程 second_a = (int) point_x[current_second];// 秒针初始化 second_b = (int) point_x[current_second]; second_graphics.drawLine(0, 0, second_a, second_b);// 用背景色清除前一秒的秒针 second_graphics.drawString("秒", second_a, second_b); int i = current_second; while (true) { try { SECOND_THREAD.sleep(1000);// 每隔一秒休眠 Color c = getBackground();// 获取背景颜色 second_graphics.setColor(c);// 设置秒针的颜色 second_graphics.drawLine(0, 0, second_a, second_b);// 用背景色清除前一秒的秒针 second_graphics.drawString("秒", second_a, second_b); if ((second_a == minute_a) && (second_b == minute_b)) {// 如果秒针与分针重合,恢复分针的显示 minute_graphics.drawLine(0, 0, minute_a, minute_b);// 用背景色清除前一分的分针 minute_graphics.drawString("分", minute_a, minute_b); } if ((second_a == hour_a) && (second_b == hour_b)) {// 如果秒针与时针重合,恢复时针的显示 hour_graphics.drawLine(0, 0, hour_a, hour_b);// 用背景色清除前一时的时针 hour_graphics.drawString("时", hour_a, hour_b); } } catch (InterruptedException e) {// 捕获异常 Color c = getBackground();// 获取背景颜色 second_graphics.setColor(c);// 设置秒针的颜色 second_graphics.drawLine(0, 0, second_a, second_b);// 用背景色清除秒针 second_graphics.drawString("秒", second_a, second_b); return; } second_a = (int) point_x[(i + 1) % 60];// 秒针向前走一个单位 second_b = (int) point_y[(i + 1) % 60]; // 每一秒走6度(一个单位格) second_graphics.setColor(Color.red);// 绘制秒针的颜色 second_graphics.drawLine(0, 0, second_a, second_b);// 用背景色清除前一秒的秒针 second_graphics.drawString("秒", second_a, second_b); i++; } } if (Thread.currentThread() == MINUTE_THREAD) {// 如果当前线程是分线程 minute_a = (int) point_x[current_minute]; minute_b = (int) point_y[current_minute]; minute_graphics.drawLine(0, 0, minute_a, minute_b); int i = current_minute;// 获取当前分钟 while (true) { try {// 第一次过60-second秒就前进一分钟,以后每过60秒前进一分钟 MINUTE_THREAD.sleep(1000 * 60 - current_second * 1000); current_second = 0; Color c = getBackground();// 获取背景颜色 minute_graphics.setColor(c);// 设置分针的颜色 minute_graphics.drawLine(0, 0, minute_a, minute_b); minute_graphics.drawString("分", minute_a, minute_b); if ((hour_a == minute_a) && (hour_b == minute_b)) {// 如果时针和分针重合 hour_graphics.drawLine(0, 0, minute_a, minute_b); hour_graphics.drawString("时", hour_a, hour_b); } } catch (InterruptedException e) { return; } minute_a = (int) point_x[(i + 1) % 60];// 分针向前走一个单位 minute_b = (int) point_y[(i + 1) % 60];// 每一分走6度(一个单位格) minute_graphics.setColor(Color.BLUE);// 绘制分针的颜色 minute_graphics.drawLine(0, 0, minute_a, minute_b); minute_graphics.drawString("分", minute_a, minute_b); i++; current_second = 0; } } if (Thread.currentThread() == HOUR_THREAD) {// 如果当前线程是时线程 int h = current_hour % 12; hour_a = (int) point_x[h * 5 + current_minute / 12]; hour_b = (int) point_y[h * 5 + current_minute / 12]; int i = h * 5 + current_minute / 12; hour_graphics.drawLine(0, 0, hour_a, hour_b); hour_graphics.drawString("时", hour_a, hour_b); while (true) { try {// 第一次过12-minute%12分钟就前进一个刻度,以后每过12分钟前进一个刻度 HOUR_THREAD.sleep(1000 * 60 * 12 - 1000 * 60 * (current_minute % 12) - current_second * 1000); current_minute = 0; Color c = getBackground(); hour_graphics.setColor(c); hour_graphics.drawLine(0, 0, hour_a, hour_b); hour_graphics.drawString("时", hour_a, hour_b); } catch (InterruptedException e) { return; } hour_a = (int) point_x[(i + 1) % 60]; hour_b = (int) point_y[(i + 1) % 60]; hour_graphics.setColor(Color.BLACK); hour_graphics.drawLine(0, 0, hour_a, hour_b); hour_graphics.drawString("时", hour_a, hour_b); i++; current_minute = 0; } } } }
发表评论
-
JAVA IO 字节流实现文件copy效率比较
2014-12-24 13:32 3344package jonavin.io; import ... -
EhCache简单例子
2014-10-20 17:04 1187import net.sf.ehcache.Cache; ... -
java 读取.ini配置文件工具类
2014-10-09 16:29 9408import java.io.BufferedReader; ... -
POI读取excel文件通用代码(增强版--支持返回javaBean集合)---2003,2007
2014-09-25 13:21 2939import java.io.File; import j ... -
HttpClient模拟get,post请求并发送请求参数(json等)
2014-09-18 16:33 16939import java.io.IOException; ... -
POI读取Excel通用代码---支持2003,2007
2014-09-18 14:07 2155package com.citics.crm.custome ... -
将数据库树形记录转为java 树形数据结构
2014-08-24 18:36 4791/** * 转换为Tree结构 * @p ... -
java HTML2PDF HTML2DOC THML2Image 后台屏幕截图
2014-08-15 11:22 1295网上找的,下载学习吧。 -
java缓存技术学习
2014-07-25 18:05 5941package com.citics.crm.custome ... -
java unicode 转中文(学习用)
2014-07-10 09:47 1194第一种方式自己实现(笨,但可以知道原理) /** ... -
java+javascript获得两个日期之间的所有月份
2014-05-30 12:29 3278java版 ... -
java开发中有用的工具类
2014-01-03 14:51 0自己备用,不公开 -
java模拟调用Servlet
2013-12-26 13:27 1183public static void main(String ... -
JSOUP 网络爬虫
2013-12-17 10:17 874简单例子学习用 -
javax 邮件发送
2013-10-21 10:20 2468import java.util.Date; import ... -
[JODConverter]word转pdf心得分享(转)
2013-10-10 14:48 1928官方网站: http://www.artofsolving. ... -
java MD5机密工具
2013-09-13 09:33 1230/************************* ... -
JAVA 将文件转换为字节
2013-09-06 10:20 1344package com.tacct.tradecontrac ... -
javaBean转Map工具类
2013-09-05 13:37 9641package com.tacct.tradecontrac ... -
JAVA 操作blob数据然后生成word文件
2013-09-05 11:27 2107import java.io.*; import jav ...
相关推荐
本示例涉及使用Java GUI创建一个钟表,展示时、分、秒三根指针的动态旋转,以反映系统的当前时间,并实时更新指针位置。下面我们将深入探讨这个主题。 首先,我们需要了解Java Swing或JavaFX这两个库,它们提供了...
在Java编程中,我们可以使用`java.util.Timer`类来创建定时任务,就像在文档"一个定时器Timer实现的钟表.doc"中所示,该文档描述了一个使用`Timer`类模拟钟表的工作原理。这个程序通过每秒更新一次时间来模拟钟表的...
- Java中,可以使用`Thread`类或者实现`Runnable`接口来创建新线程。在这个例子中,我们可能会创建一个单独的线程来周期性地刷新时钟的显示。 - `java.util.Timer`或`java.lang.Thread.sleep()`也可以用来实现定时...
在这个模拟钟表的例子中,可能会创建三个线程,分别代表时针、分针和秒针。 创建线程的方式之一是通过继承`Thread`类。例如,我们可以创建三个类,如`HourHandThread`, `MinuteHandThread` 和 `SecondHandThread`,...
本项目就是这样一个例子,它展示了如何用Java编写一个美观且实用的数字时钟。 数字时钟的基本原理是通过获取系统当前时间,并将其转换为可读的数字格式展示给用户。在Java中,我们通常会使用`java.util.Date`和`...
"j2me的一个简单钟表实现"这个项目就是一个典型的例子,它展示了如何在有限的资源和界面条件下创建一个实时更新的钟表应用。 J2ME是Java平台的一个子集,专门用于嵌入式设备,如手机、智能手表等,其核心在于提供轻...
可以使用`canvas.save()`和`canvas.rotate()`来保存当前画布状态并进行旋转,然后绘制刻度,最后用`canvas.restore()`恢复原始状态。 4. **处理触摸事件**:如果需要交互功能,比如拖动指针,我们需要重写`...
**jFreeChart简介** jFreeChart是一个开源的Java库,用于生成高质量的图表,支持多种图表...无论你是初学者还是经验丰富的开发者,jFreeChart都为你提供了一套强大且易用的工具,帮助你在Java环境中实现数据的可视化。
本文将深入探讨如何在Android平台上实现一个自定义的钟表视图。首先,我们从标题和描述中可以得知,这是一个关于使用Android SDK创建自定义View,模拟钟表运行的项目。 自定义控件通常涉及到以下关键步骤: 1. **...
Java程序设计PPT教程主要涵盖了面向对象编程的基本概念和核心机制。Java作为一种强类型、面向对象的语言,它的基本单位是类,类...通过学习和理解这些概念,开发者能够构建出高效、可扩展且易于维护的Java应用程序。
本文将深入探讨如何在Android中实现一个自定义的时间钟表,同时优化绘图操作。 首先,自定义视图是Android开发中的一个重要概念,它允许开发者扩展系统提供的基本视图类,以满足特定需求。Android提供了View和...
可以使用`drawCircle()`绘制钟表的中心圆盘,用`drawArc()`画出分界线。通过调整颜色和线宽,可以创建出各种风格的表盘。 7. **绘制指针**: 对于时针、分针和秒针,可以使用`drawLine()`绘制直线,调整长度和...
这个例子展示了如何使用Canvas的基本绘图操作,如绘制线条和旋转坐标系,以及如何利用Android的View机制来实现动态效果。理解并熟练掌握这些概念对于任何Android开发者来说都是非常重要的,尤其是在创建自定义UI组件...
在这个例子中,我们可能会创建一个新的Java类,如`CustomClock`,它继承自`View`。这样,我们就可以重写`onDraw()`方法,这是Android系统用来绘制视图的地方。在`onDraw()`中,我们可以使用`Canvas`对象进行绘图操作...
在这个例子中,paint方法被用来画一个钟表,通过Graphics对象的drawOval()方法画出钟面,然后根据当前时间计算分钟、小时和秒的角度,使用drawLine()方法画出指针。 画日期列表部分,程序使用了JTable。JTable是...
自己整理收集一些内容(努力成为终身学习者) 整理自己的一些 github stars项目 目录 java 库名 简述 分类 备注 Stars 高效的时间工具包 java 时间工具包 一个比较全的maven framework项目(各种例子和教程) 知识库 一...
本项目“ViewPaintColck”就是一个基于Java实现的自绘钟表的例子,展示了如何利用Android的Canvas和Paint类来创建动态、实时的图形。 首先,我们来看“自绘的钟表”。在Android中,`View`类是所有UI组件的基础,而`...
本文实例为大家分享了javascript canvas实现简易时钟的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8> <meta name=viewport content=...
- **绘制钟表盘面**:使用`Paint`对象设置画笔颜色、样式等属性,然后在`onDraw()`中画出圆形背景,可能是灰色的钟表盘,以及用不同颜色表示的小时和分钟刻度线。数字和刻度线可以使用`drawText()`和`drawLines()`...
在Android中,我们可以使用Calendar或者java.time包中的类来获取当前时间,然后根据时间的小时、分钟、秒来计算指针的位置。例如,我们可以用角度来表示时间,12小时制的表盘360度代表24小时,每小时对应30度,分钟...