编写程序显示一个时钟。示例输出如图所示。

代码:

package com.DisplayClock;

import javax.swing.*;

import java.awt.*;

import java.awt.geom.*;

public class DisplayClock{

Thread hourThread = null;//时针线程

Thread minuteThread = null; //分针线程

Thread secondThread = null;//秒针线程

int currentHour = 0;//获取当前时间中代表小时的数字值

int currentMinute = 0;//获取当前时间中代表分钟的数字值

int currentSecond = 0;//获取当前时间中代表秒数字值

int isRestart = 0;//判断是否重新开始

public static void main(String[] args){

EventQueue.invokeLater(new Runnable()

{

public void run()

{

DrawFrame frame = new DrawFrame();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setVisible(true);

}

});

}

}

class DrawFrame extends JFrame{

public DrawFrame()

{

setTitle("DisplayClock");//设置显示窗的标题

setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);//设置窗口的大小

DrawComponent component = new DrawComponent();

//创建要建立的图形的对象

add(component);

//将该图形加入到面板上

}

public static final int DEFAULT_WIDTH = 500;

//设置窗口的宽度

public static final int DEFAULT_HEIGHT = 500;

//设置窗口的高度

}

//建立时钟图形

class DrawComponent extends JComponent

{

public void paintComponent(Graphics g)

{

g.setColor(Color.blue);

Graphics2D g2 = (Graphics2D) g;

Ellipse2D circle = new Ellipse2D.Double();

circle.setFrameFromCenter(200,200,300,300);

g2.draw(circle);

//用来写表盘上的刻度

g.setColor(Color.green);

double jiaodu = Math.PI / 2;

double keX[] = new double[60];//存放表盘刻度的起始X坐标

double keY[] = new double[60];//存放表盘刻度的起始Y坐标

double duX[] = new double[60];//存放表盘刻度的终止X坐标

double duY[] = new double[60];//存放表盘刻度的终止Y坐标

for(int i = 0;i < 60;i++){

if(i == 0||i%5 == 0)

{

keX[i] = 200 + 80 * Math.cos(jiaodu);

keY[i] = 200 - 80 * Math.sin(jiaodu);

}

else

{

keX[i] = 200 + 90 * Math.cos(jiaodu);

keY[i] = 200 - 90 * Math.sin(jiaodu);

}

duX[i] = 200 + 100 * Math.cos(jiaodu);

duY[i] = 200 - 100 * Math.sin(jiaodu);

jiaodu = jiaodu - Math.PI / 30;

}

for(int j =0;j < 60;j++){

g2.draw(new Line2D.Double(keX[j],keY[j],duX[j],duY[j]));

}

//画12点的指针秒针

g.setColor(Color.black);

g2.draw(new Line2D.Double(200,200,200,130));

//画出分针

g.setColor(Color.BLUE);

g2.draw(new Line2D.Double(200,200,200,140));

//画出时针

g.setColor(Color.PINK);

g2.draw(new Line2D.Double(200,200,200,150));

}

}

java 在界面上画一个时钟_编写程序显示一个时钟 - javaCoder的个人页面 - OSCHINA - 中文开源技术交流社区...相关推荐

  1. java电子报刊网站_采集电子报纸 - 杨尚川的个人页面 - OSCHINA - 中文开源技术交流社区...

    1.接口 /** *报纸采集器 * @author 杨尚川 */ public interface PaperCollector { /** * 下载当日报纸,一个文件对应一个版面 * @return ...

  2. php 小程序 运动步数_小程序同步微信步数 - xiangqian1的个人空间 - OSCHINA - 中文开源技术交流社区...

    小程序获取微信运动步数,咱们看文档:https://developers.weixin.qq.com/miniprogram/dev/api/open-api/werun/wx.getWeRunDat ...

  3. java简述标识符和保留字区别_Java 基础语法 - 流年似水莫停留的个人页面 - OSCHINA - 中文开源技术交流社区...

    Java 基础语法 一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作.下面简要介绍下类.对象.方法和实例变量的概念. 对象:对象是类的一个实例,有状态和行为.例如,一 ...

  4. q7固件 数码视讯_数码视讯Q7的刷机 - osc_8quu62cg的个人空间 - OSCHINA - 中文开源技术交流社区...

    Q7的硬件配置 CPU: S905L RAM: MIRA P3P4GF4DMF/P3P4GF4BLF DDR3 512MB * 2 = 1GB ROM: 镁光29F64G08CBABB(NAND) * ...

  5. mysql聚类函数排序_聚类算法大盘点 - 如鱼饮水,冷暖自知 - OSCHINA - 中文开源技术交流社区...

    最近在关注聚类分析,了解了之后才发现,原来聚类分析里已经有这么丰富的成果,因此希望对其做个较全面的总结. 本文涉及到的聚类算法较多,请允许我慢慢更新. 1 层次聚类 (Agglomerative Cl ...

  6. mysql外码内码定义_中文编码杂谈(转) - CodeAxe的个人页面 - OSCHINA - 中文开源技术交流社区...

    编码问题的例子 在windows自带的notepad(记事本)程序中输入"联通"两个字,保存后再次打开,会发现"联通"不见了,代之以"��ͨ" ...

  7. mysql消除冗余关键字_优化mysql语句 - 可爱的wzz的个人空间 - OSCHINA - 中文开源技术交流社区...

    1.查询SQL尽量不要使用select *,而是select具体字段. 反例子: select * from employee; 正例子: select id,name from employee; ...

  8. java自定义标签遍历_自定义标签 - CarlDing的个人页面 - OSCHINA - 中文开源技术交流社区...

    EL的不足,由JSTL来加强  -> 自定义标签来实现. 1:自定义标签 1:自定义标签也是类. 2:让用户在JSP页面使用,不引用Java代码的情况下,调用Java代码. 2:标签开的类的继承 ...

  9. java选择排序不稳定_选择排序就这么简单 - Java3y的个人空间 - OSCHINA - 中文开源技术交流社区...

    选择排序就这么简单 从上一篇已经讲解了冒泡排序了,本章主要讲解的是选择排序,希望大家看完能够理解并手写出选择排序的代码,然后就通过面试了!如果我写得有错误的地方也请大家在评论下指出. 选择排序介绍和稳 ...

最新文章

  1. p10平板电脑android,8英寸安卓系统 Newpad P10平板电脑评测
  2. qt 进度条_Qt开源作品12-硬盘容量控件
  3. 多C++标准版本指定
  4. 命令逐行显示_Linux命令和Shell脚本学习随笔3
  5. 机器学习之神经网络学习及其模型
  6. LoadLibrary 失败 GetLastError 126
  7. 如何让你的Linux云服务器更加的安全?
  8. 偏置方差分解Bias-variance Decomposition
  9. vue自学入门-2(vue创建项目)
  10. 架构篇:什么是微服务架构 Spring Cloud?
  11. 科学计算器 c语言源代码,科学计算器C语言代码
  12. **关于小程序测试版本自己的头像与数据不显示问题**
  13. 视觉工程师:工业相机50问
  14. Vue中使用swiper构建简易轮播图
  15. OpenMV学习(0):环境搭配
  16. hadoop与spark的异同
  17. 【调剂】2022年太原科技大学力学专业接收工学调剂生
  18. 高德地图离线地图开发 教程
  19. 六点要求,社招进阿里,一个萝卜一个坑,想去阿里看看能不能对号入座再说
  20. 计算机网络(自顶向下方法)中的PoP

热门文章

  1. ubuntu上Nginx的配置
  2. notes belonging to given user
  3. html native code is rendered from xml configuration
  4. where used list repository table WBCROSSGT
  5. 一个Java快速排序实现的调试
  6. cap理论具体含义_分布式事务的CAP理论
  7. 哨兵系列卫星_智利Panguipulli湖的卫星遥感水特征时空变化图
  8. 四数之和Python解法
  9. 查看Python当前版本
  10. qt单步调试linux程序,用Qt 调用GDB调试 Arm程序 详细步骤----可单步执行每一行