展开全部

import java.awt.*;

import java.awt.event.*;

import java.awt.geom.*;

import java.util.Calendar;

import javax.swing.*;

public class Clock extends JPanel implements ActionListener

{

//创建时钟的外形

protected static Ellipse2D face = new Ellipse2D.Float( 3, 3, 94, 94 );

//创建时钟的标记

protected static GeneralPath tick = new GeneralPath();

static

{

tick.moveTo( 100, 100 );

tick.moveTo( 49, 0 );

tick.lineTo( 51, 0 );

tick.lineTo( 49, 6 );

tick.lineTo( 49, 0 );

}

//创建时针

protected static GeneralPath hourHand = new GeneralPath();

static

{

hourHand.moveTo( 50, 15 );

hourHand.lineTo( 53, 50 );

hourHand.lineTo( 50, 53 );

hourHand.lineTo( 47, 50 );

hourHand.lineTo( 50, 15 );

}

//创建分针

protected static GeneralPath minuteHand = new GeneralPath();

static

{

minuteHand.moveTo( 50, 2 );

minuteHand.lineTo( 53, 50 );

minuteHand.lineTo( 50, 58 );

minuteHand.lineTo( 47, 50 );

minuteHand.lineTo( 50, 2 );

}

//创建秒针

protected static GeneralPath secondHand = new GeneralPath();

static

{

secondHand.moveTo( 49, 5 );

secondHand.lineTo( 51, 5 );

secondHand.lineTo( 51, 62 );

secondHand.lineTo( 49, 62 );

secondHand.lineTo( 49, 5 );

}

//设置时钟的颜色e69da5e887aa3231313335323631343130323136353331333262383636

protected static Color faceColor = new Color( 220, 220, 220 );

protected static Color hourColor = Color.red.darker();

protected static Color minuteColor = Color.blue.darker();

protected static Color secondColor = new Color( 180, 180, 0 );

protected static Color pinColor = Color.gray.brighter();

//设置时钟的枢纽

protected Ellipse2D pivot = new Ellipse2D.Float( 47, 47, 6, 6 );

protected Ellipse2D centerPin = new Ellipse2D.Float( 49, 49, 2, 2 );

//创建饶时钟枢纽转的变换

protected AffineTransform hourTransform =

AffineTransform.getRotateInstance( 0, 50, 50 );

protected AffineTransform minuteTransform =

AffineTransform.getRotateInstance( 0, 50, 50 );

protected AffineTransform secondTransform =

AffineTransform.getRotateInstance( 0, 50, 50 );

//创建每秒触发一次的Timer

protected Timer timer = new Timer( 1000, this );

protected Calendar calendar = Calendar.getInstance();

public Clock()

{

setPreferredSize( new Dimension( 100, 100 ) );

}

public void addNotify()

{

super.addNotify();

timer.start();

}

public void removeNotify()

{

timer.stop();

super.removeNotify();

}

public void actionPerformed( ActionEvent event )

{

//更新calendar的时间

this.calendar.setTime( new java.util.Date() );

int hours = this.calendar.get( Calendar.HOUR );

int minutes = this.calendar.get( Calendar.MINUTE );

int seconds = this.calendar.get( Calendar.SECOND );

//设置变换, 使得时针、分针、秒针各自绕枢纽旋转一定的角度

hourTransform.setToRotation( ( ( double ) hours ) * ( Math.PI / 6.0 ), 50, 50 );

minuteTransform.setToRotation( ( ( double ) minutes ) * ( Math.PI / 30.0 ), 50, 50 );

secondTransform.setToRotation( ( ( double ) seconds ) * ( Math.PI / 30.0 ), 50, 50 );

repaint();

}

public void paint( Graphics g )

{

super.paint( g );

//得到图形上下文和抗锯齿处理

Graphics2D g2 = ( Graphics2D ) g;

g2.setRenderingHint( RenderingHints.KEY_ANTIALIASING,

RenderingHints.VALUE_ANTIALIAS_ON );

g2.setPaint( faceColor );

g2.fill( face );

g2.setPaint( Color.black );

g2.draw( face );

//产生钟面上12个滴答位置

for( double p = 0.0; p < 12.0; p += 1.0 )

{

//利用变换画出同心的滴答的标线

g2.fill( tick.createTransformedShape(

AffineTransform.getRotateInstance( ( Math.PI / 6.0 ) * p, 50, 50 ) ) );

}

g2.setPaint( hourColor );

g2.fill( hourHand.createTransformedShape( hourTransform ) );

g2.setPaint( minuteColor );

g2.fill( minuteHand.createTransformedShape( minuteTransform ) );

g2.setPaint( secondColor );

g2.fill( secondHand.createTransformedShape( secondTransform ) );

g2.fill( pivot );

g2.setPaint( pinColor );

g2.fill( centerPin );

}

public static void main( String[] args )

{

JFrame frame = new JFrame();

frame.setLocation( 700, 400 );

frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

frame.getContentPane().add( new Clock() );

frame.pack();

frame.show();

}

}

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

用java编写打印时间_编写一个java程序,读取系统时间,然后将时间用中文输出...相关推荐

  1. java输入字符串异常_设计一个 Java 程序,自定义异常类,从命令行(键盘)输入一个字符串,如果该字符串值为“XYZ”。。。...

    设计一个 Java 程序,自定义异常类,从命令行(键盘)输入一个字符串,如果该字符串值为"XYZ",则抛出一个异常信息"This is a XYZ",如果从命令 ...

  2. java 64内存不足_请教一个 Java 内存占用的问题

    第 1 条附言  ·  364 天前 2020-03-04 01:08:55.525 [HikariPool-1 housekeeper] WARN c.z.hikari.pool.HikariPoo ...

  3. java单链表例子_写一个java链表的例子?随便举例说一下。

    展开全部 //单链表类 package dataStructure.linearList; import dataStructure.linearList.Node; //导入单链表结点类 impor ...

  4. Java web 服务器 搭建_搭建一个java web服务端

    最近也是做了一个简单的java web 项目,由于以前也是没接触过,在这里记录下搭建一个web服务端的过程. 一般我们做一个服务端要么在本地自己的电脑上先安装环境,一般是windows系统,主要安装j ...

  5. java开发岗位认识_身为一个java开发人员对目前java开发的一些小小的认识

    为什么要学java? 第一要工作,第二想要高薪 首先身为java开发工作人员你的思想认知程度要搞,思想认知程度决定你的专业技能水平 JavaSE工程师     B/S 架构   ----    浏览器 ...

  6. java将古诗竖排_写一个java程序 将一首古诗竖着排序从右往左读

    展开全部 import java.awt.Color; import java.awt.Font; import java.awt.GradientPaint; import java.awt.Gra ...

  7. A002、java环境搭建_第一个java程序

    目录 1.内容介绍 2.软件开发概述 2.1 软件开发概念 2.2 软件开发示例 2.3 软件开发语言 2.3.1 计算机语言概述 2.3.2 计算机语言分类 2.4 小结 3.Java概述 3.1 ...

  8. 《快乐编程大本营》java语言训练班 1课:第一个java程序:你好,范冰冰;

    <快乐编程大本营>java语言训练班 1课:第一个java程序:你好,范冰冰: 1Java介绍 2安装java环境JDK 3安装web环境tomcat 4安装开发工具Idea2017 5编 ...

  9. java容器有哪些_什么是Java容器?Java常见容器有哪些?

    我们在面试中或者在实际工作中,常常问到这个问题,那么最基本的我们首先要了解什么是java容器,再去学习java常见容器. 在百度上,是这么解释java容器的: 容器是一个Java 所编写的程序,原先必 ...

  10. 入门的第一个C++程序。从键盘输入学生姓名,然后输出指定格式的内容。

    PTA 作业罢了,仅供参考. 入门的第一个C++程序.从键盘输入学生姓名,然后输出指定格式的内容. 输入格式: 学生姓名. 输出格式: Hello, C++! My name is <学生姓名& ...

最新文章

  1. 我的微软最有价值专家(Microsoft MVP)之路
  2. 五分钟理解yield在python中的简单用法,让你不再迷惑
  3. 元宇宙大热后将陷低潮, 虚实互联网更准确, 2030前后才可能全面热启
  4. 计算机学习的基本形式,电脑基础知识学习方法
  5. 【BZOJ3439】Kpm的MC密码,trie树+dfs序+主席树
  6. 大规模数据存储集群数据存放的设计,分布式shardid的生成 - 如何指定范围随机数, 分组随机数...
  7. .NET简谈反射(动态调用)
  8. 梦到两个人辞职,一男一女
  9. 用 Python 搭建解一元二次方程的计算器
  10. IDEA离线安装插件
  11. 【AI教程】AI科研绘图
  12. 北大软微计算机动画,【新增】2019年北京大学软微学院【电影方向】考研653、905参考书真...
  13. 美工素材 站酷 千图网 昵图网
  14. Java实现内网穿透
  15. JSP页面的初步编写
  16. GeneXus中如何使用聊天机器人
  17. 鸿蒙生态的2021:像犀牛在丛林飞
  18. luogu P2056 采花
  19. CGR模型文件如何转换成FBX格式文件
  20. 设计团旗的c语言程序设计教程课后答案,最新团知识竞赛题目及答案

热门文章

  1. cxf 本地wsdl_cxf使用wsdl文件生成代码
  2. sudo apt install镜像_将Docker镜像安全扫描步骤添加到CI/CD管道
  3. 深度网络pre-train对于深度网络的意义
  4. 关于Faster R-CNN的一切——笔记3:Faster R-CNN
  5. 错误fatal error: zlib.h: 没有那个文件或目录的解决办法
  6. 请编写一个 C 函数,该函数给出一个字节中8二进制数中为1的个数
  7. 把javascript中的json对象传到action的list里的方法
  8. 2017-07-02 前端日报
  9. 使用BootStrapValidator来完成前端输入验证
  10. 获取iPhone型号