• PUDN用户
    了解作者
  • Java
    开发工具
  • 2KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 5
    下载次数
  • 2012-06-22 16:58
    上传日期
利用多线程 编写一个模拟时钟(AWT程序、Runnable接口),有时分秒 针编写一个应用程序,创建三个线程分别显示各自的时间
src.rar
  • TimeFrame.java
    1.2KB
  • TimePanel.java
    2.6KB
内容介绍
import java.awt.BasicStroke; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Panel; import java.awt.geom.AffineTransform; import java.awt.geom.Ellipse2D; import java.awt.geom.Line2D; import java.util.Calendar; /** *@author 周建国(200905030116) *@version 创建时间:2012-6-1下午1:27:52 *说明:利用多线程 编写一个模拟时钟(AWT程序、Runnable接口),有时分秒 针 *编写一个应用程序,创建三个线程分别显示各自的时间。 */ public class TimePanel extends Panel implements Runnable{ private static final long serialVersionUID = 1L; boolean go=true; private int h,m,s,width=150,height=150; int x0=this.getWidth()/2,y0=this.getHeight()/2; Line2D.Double hourHand=new Line2D.Double(0,-76,0,60*.1), minuteHand=new Line2D.Double(0,-98,0,60*.2), secondHand=new Line2D.Double(0,-114,0,60*.27); double PIPI=2.0*Math.PI; Ellipse2D.Double center=new Ellipse2D.Double(-3,-3, 4, 4); BasicStroke widePen=new BasicStroke(6.0f,BasicStroke.CAP_ROUND,BasicStroke.JOIN_MITER); BasicStroke middlePen=new BasicStroke(4.0f,BasicStroke.CAP_ROUND,BasicStroke.JOIN_MITER); BasicStroke narrowPen=new BasicStroke(2.0f,BasicStroke.CAP_ROUND,BasicStroke.JOIN_MITER); TimePanel(){ this.setSize(width,height); Calendar now=Calendar.getInstance(); h=now.get(Calendar.HOUR_OF_DAY);m=now.get(Calendar.MINUTE);s=now.get(Calendar.SECOND); } public void paint(Graphics g){ double secondAngle=s*PIPI/60,minuteAngle=m*PIPI/60,hourAngle=h*PIPI/12; Graphics2D g2d=(Graphics2D)g; g2d.setPaint(Color.CYAN); g2d.translate(width/2+54, height/2+100); AffineTransform transform=g2d.getTransform(); g2d.setStroke(widePen); g2d.rotate(hourAngle); g2d.draw(hourHand); g2d.setTransform(transform); g2d.setStroke(middlePen); g2d.rotate(minuteAngle); g2d.draw(minuteHand); g2d.setStroke(narrowPen); g2d.setTransform(transform); g2d.rotate(secondAngle); g2d.draw(secondHand); g2d.setTransform(transform); g2d.setPaint(Color.RED); g2d.draw(center); g2d.setFont(new Font(Font.DIALOG_INPUT,Font.CENTER_BASELINE,24)); g2d.drawString(String.valueOf(h)+":"+String.valueOf(m)+":"+String.valueOf(s), x0-60, y0+150); } public void run() { // TODO Auto-generated method stub while(go){ try{ Thread.sleep(1000); if(++s>=60){ s=0; if(++m>=60){ m=0; h=++h%24; } } repaint(); } catch (InterruptedException e) { // TODO Auto-generated catch block System.out.println("进程出错:"+e.toString()); } } } }
评论
    相关推荐
    • 多线程笔记.zip
      多线程进行全面学习的笔记,里面包含简单到复杂的多线程的基础知识
    • 多线程.rar
      多线程运行,单线程有可能造成程序运行时间过长,直接导致死机
    • windows 多线程
      Windows多线程编程 Win32多线程编程 Windows环境下的多线程编程原理与应用 三本经典之作 及原码
    • Chronicle-TimeSeries:多线程时间序列库
      多线程时间序列库 目的 该库有两个效率目标 在基于列的数据库中高效地存储长数据序列。 尽可能进行多线程处理 与引擎集成,用于查找和管理TimeSeries。 在时间以毫秒为单位的时间序列上执行计算,每个时间序列都有...
    • 多线程socket
      linux系统下实现多线程、服务器、客户端、信号处理以及多线程讲解、源码操作说明-Linux system realize multithreading, server, client, signal processing and multithreading explanation, the source operating ...
    • ajax 多线程时间 进度条
      ajax 多线程时间 进度条
    • java 多线程
      多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体
    • 多进程多线程时间服务.zip
      unix环境下,分别使用多进程和多线程实现服务端和客户端,服务端向客户端发送系统时间,并时使用jmeter测试。其中包括完整代码和学生使用的完整实验报告
    • 多线程同步
      多线程性能一直是困扰我们代码性能的一个难点,代码中给出了一种方式,去同步字符串,线程携带同一个字符串进入同步方法中,会阻塞,非同一个字符串不会阻塞,所以我们可以考虑用账户名称、或一些账户独有不会重复的...
    • C# 多线程 时间和委托源代码
      这是我自己学习中的一些源代码,加了一些我自己的理解注释,包括了,多线程,事件和委托(带参数和不带参数),事件回调。winform子线程调用窗体控件,委托多路广播。都是单独的一个知识点一份源代码,看起来应该是...