JAVA线程程序设计(小时钟)实验报告(附完整代码)
JavaFX实现简易时钟效果

JavaFX实现简易时钟效果本⽂实例为⼤家分享了JavaFX实现简易时钟效果的具体代码,供⼤家参考,具体内容如下⾸先要在⾯板中显⽰⼀个时钟,我们可以设计⼀个ClockPane类来显⽰⼀个时钟。
最终效果:若要绘制⼀个时钟,需要绘制⼀个圆并为秒钟、分钟和⼩时绘制三个指针。
为了画⼀个指针,需要确定⼀条直线的两端:⼀端是时钟的中央,位于(centerX,centerY);另外⼀端位于(endX,endY),由⼀下公式来确定:endX=centerX+handLength×sin(θ) endY=centerY-handLength×cos(θ)(其中θ是指针和竖直⽅向12点的夹⾓)因为⼀分钟有60秒,所以第2个指针的⾓度是:second×(2π/60)分钟的位置由分钟和秒钟来决定。
包含秒数的确切分钟数是minu+second/60。
例如,如时间是3分30秒,那么总的分钟数就是3.5。
由于⼀⼩时有60分钟,因此分针的⾓度是: (minute+second/60)×(2π/12)由于⼀个圆被分为12个⼩时,所以时针的⾓度是: (hour+minute/60+second/(60×60))×(2π/12)为了简化计算,在计算分针和时针⾓度的时候,可以忽略秒针,因为它们数字太⼩,基本可以忽略。
因此,秒针、分针以及时针的端点可以如下计算:secondX = centerX + secondHandLength × sin(second × (2π/60))secondY = centerY - secondHandLength × cos(second × (2π/60))minuteX = centerX + minuteHandLength × sin(minute × (2π/60))minuteY = centerY - minuteHandLength × cos(minute × (2π/60))hourX = centerX + hourHandLength × sin((hour+minute/60) × (2π/12))hourX = centerX + hourHandLength × sin((hour+minute/60) × (2π/12))这样就得到了ClockPane类的实现程序:package pany;import yout.Pane;import javafx.scene.paint.Color;import javafx.scene.shape.Circle;import javafx.scene.shape.Line;import javafx.scene.text.Text;import java.util.Calendar;import java.util.GregorianCalendar;public class ClockPane extends Pane{private int hour;private int minute;private int second;private double w=250,h=250;public ClockPane() {setCurrentTime();}public ClockPane(int hour,int minute,int second) {this.hour=hour;this.minute=minute;this.second=second;paintClock();}public int getHour() {return hour;}public void setHour(int hour) {this.hour=hour;paintClock();}public int getMinute() {return minute;}public void setMinute(int minute) {this.minute=minute;paintClock();}public int getSecond() {return second;}public void setSecond(int second) {this.second=second;paintClock();}public double getW() {return w;}public void setW(double w) {this.w=w;paintClock();}public double getH() {return h;}public void setH(double h) {this.h=h;paintClock();}public void setCurrentTime() {Calendar calendar=new GregorianCalendar();this.hour=calendar.get(Calendar.HOUR_OF_DAY);this.minute=calendar.get(Calendar.MINUTE);this.second=calendar.get(Calendar.SECOND);paintClock();}protected void paintClock() {double clockRadius=Math.min(w,h)*0.8*0.5;double centerX=w/2;double centerY=h/2;Circle circle=new Circle(centerX,centerY,clockRadius);circle.setFill(Color.WHITE);circle.setStroke(Color.BLACK);Text t1=new Text(centerX-5,centerY-clockRadius+12,"12");Text t2=new Text(centerX-clockRadius+3,centerY+5,"9");Text t3=new Text(centerX+clockRadius-10,centerY+3,"3");Text t4=new Text(centerX-3,centerY+clockRadius-3,"6");double sLength=clockRadius*0.8;double scondX=centerX+sLength*Math.sin(second*(2*Math.PI/60)); double scondY=centerY-sLength*Math.cos(second*(2*Math.PI/60)); Line sline=new Line(centerX,centerY,scondX,scondY);sline.setStroke(Color.RED);double mLength=clockRadius*0.65;double minuteX=centerX+mLength*Math.sin(minute*(2*Math.PI/60)); double minuteY=centerY-mLength*Math.cos(minute*(2*Math.PI)/60); Line mline=new Line(centerX,centerY,minuteX,minuteY);mline.setStroke(Color.BLUE);double hLength=clockRadius*0.5;double hourX=centerX+hLength*Math.sin((hour%12+minute/60.0)*(2*Math.PI/12));double hourY=centerY-hLength*Math.cos((hour%12+minute/60)*(2*Math.PI/12));Line hline=new Line(centerX,centerY,hourX,hourY);hline.setStroke(Color.GREEN);getChildren().clear();getChildren().addAll(circle,t1,t2,t3,t4,sline,mline,hline);}}对程序的简要解读:①Java API的GregorianCalendar类可以使⽤它的⽆参构造⽅法来商城⼀个具有当前时间的Calendar实例。
JAVA课程设计 闹钟的设计与实现项目报告 附源代码

Java 设计报告书课程名称:JAVA语言程序设计设计题目:闹钟的设计与实现院系:计算机科学与信息工程系学生姓名:学号:专业班级:指导教师:许研2010 年12 月28 日目录一、题目描述 (1)二、设计思路 (1)三、运行结果 (5)四、源代码 (6)五、总结 (10)六、参考文献 (10)闹钟的设计与实现一、题目描述:结合JAVA图形界面的知识设计一个闹钟二、设计思路1、设计要求:编写闹钟钟程序,要求画出时钟面板,动态的显示当前时间,可设定或解除闹钟时间,并提供闹钟服务相应的文字提示功能与可以自己选择闹钟提示声音提示功能,并在闹钟设定的输入框中有简单的排错功能。
2、算法基本描述:本程序先是在框架中新建了一个容器,然后用GridLayout类对面板进行划分,程序引入java.util.Date来显示当前时间,并用一个永真循环,来对当前时间显示的更新,引入java.io.File来实现对文件的读写操作,程序设计了一个选择按钮,用来选择文件,并且声明只能选择,WAU、MID的文件,引入用java.applet.Applet 来播放音乐文件,用getText()函数获取输入的闹钟设定时间,并永真循环和当前的时间进行对比,若相等则播放音乐,若不相等则显示离目标设定时间的差距。
3、设计思想与内容1、画出类的UML简图Clock类:Clock类中的变量ri, shi, fen, miao, dangqian, guanji: JLabe lqueding, dakai: JButtonmusic, RI, SHI, FEN, MIAO: JTextFieldh = 0, f = 0, m = 0, r = 0 :intFo, foo: booleansoumd1: public AudioClipClock类中的函数public clock()public static void main(String agrs[])public void run()2、各方法功能描述列表Clock类方法功能Main()执行main函数Clock()Clock类的构造函数,用于对时钟界面的初始化Run()用于对时钟的动态显示的执行,并判断是否设定了闹钟时间,若当前时间与设定的时间相等则播放选定的音乐3、主要模块算法描述(1)当前动态时间的显示的设计与实现。
利用JAVA实现一个时钟的小程序

JAVA课程项目报告项目题目:利用JAVA实现一个小时钟的程序专业班级:10软件工程利用JAVA实现一个时钟的小程序1.软件开发的需求分析在当今的信息时代,时钟已经成为人们生活中必不可少的应用工具,Java语言是当今流行的网络编程语言,它具有面向对象、与平台无关、安全、多线程等特点。
使用Java 语言不仅可以实现大型企业级的分布式应用系统,还能够为小型的、嵌入式设备进行应用程序的开发。
面向对象的开发方法是当今世界最流行的开发方法,它不仅具有更贴近自然的语义,而且有利于软件的维护和继承。
为了进一步巩固课堂上所学到的知识,深刻把握Java语言的重要概念及其面向对象的特性,锻炼我们熟练的应用面向对象的思想和设计方法解决实际问题的能力,开设了Java程序设计课程设计。
此次课程设计的题目为简单的小时钟程序设计,通过做巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、JCreator等开发工具的运用,拓宽常用类库的应用。
使我们通过该教学环节与手段,把所学课程及相关知识加以融会贯通,全面掌握Java语言的编程思想及面向对象程序设计的方法,为今后从事实际工作打下坚实的基础。
2.具体实现2.1设计思路Java是一种简单的,面向对象的,分布式的,解释的,键壮的,安全的,结构中立的,可移植的,性能很优异的,多线程的,动态的语言。
Java去掉了C++语言的许多功能,让Java的语言功能很精炼,并增加了一些很有用的功能,如自动收集碎片。
这将减少平常出错的50%。
而且,Java很小,整个解释器只需215K的RAM。
因此运用JAVA程序编写小时钟程序,实现简单显示时间的功能。
本次课程设计做的是Java简单小时钟,它是图形界面、线程、流与文件等技术的综合应用,其界面主要采用了java.awt包,javax.swing包等。
程序实现了小时钟的基本功能。
2.2设计方法在设计简单小时钟时,需要编写5个Java源文件:Server.java、Objecting.java、LogIn.java、ClientUser.java、Client.java。
java实验一:写一个桌面时钟

java实验⼀:写⼀个桌⾯时钟⼀共有三个类:这个是第⼀个,主函数类:public class Programe extends JFrame {/** 四个部分: 1.画出窗体和⾯板 2.画出指针 3.时间转换的算法 4.让指针动起来*/public static void main(String[] string) {Programe frame = new Programe();// 创建窗体对象frame.setVisible(true);// 设置窗体可见,没有该语句,窗体将不可见,此语句必须有,否则没有界⾯就没有意义}public Programe() {setUndecorated(false);// 打开窗体修饰setAlwaysOnTop(true);// 窗体置顶getContentPane().setLayout(new BorderLayout()); // 在窗体的基础上加⼊⾯板:Panel ⽽后就可以在⾯板上进⾏其他操作 // 指定的组件之间的⽔平间距构造⼀个边界布局setBounds(100, 30, 217, 257);// ⽤于设置窗⼝尺⼨和位置;ClockPaint clockPaint = new ClockPaint();// 创建时钟⾯板getContentPane().add(clockPaint);new Thread() {// 继承Thread类创建线程,更新时钟⾯板界⾯@Overridepublic void run() {// 重写run⽅法try {while (true) {sleep(1000);// 休眠1秒clockPaint.repaint();// 重新绘制时钟⾯板界⾯}} catch (InterruptedException e) {e.printStackTrace();// 在命令⾏打印异常信息在程序中出错的位置及原因。
}}}.start();}}这个是第⼆个,画时钟的类:package clock;import java.awt.BasicStroke;import java.awt.Color;import java.awt.Dimension;import java.awt.Graphics;import java.awt.Graphics2D;import javax.swing.ImageIcon;import javax.swing.JPanel;public class ClockPaint extends JPanel {private static final BasicStroke H = new BasicStroke(4);// 指针粗细private static final BasicStroke M = new BasicStroke(3);private static final BasicStroke S = new BasicStroke(2);private final static int secLen = 60; // 指针长度private final static int minuesLen = 55;private final static int hoursLen = 36;ImageIcon background;// 背景private int X;// 中⼼坐标private int Y;public ClockPaint() {background = new ImageIcon(getClass().getResource("时钟.jpg"));// 加载图⽚int Width = background.getIconWidth();// 获取图⽚宽度X = Width / 2 + 2;// 获取图⽚中间坐标int Height = background.getIconHeight();// 获取图⽚长度Y = Height / 2 - 8;// 获取图⽚中间坐标setPreferredSize(new Dimension(Width, Height));// 设置最好的⼤⼩(固定⽤法)}public void paint(Graphics g) {Graphics2D g2 = (Graphics2D) g;g2.drawImage(background.getImage(), 0, 0, this);ClockData data = new ClockData(secLen, minuesLen, hoursLen);// 绘制时针g2.setStroke(H);// 设置时针的宽度g2.setColor(Color.RED);// 设置时针的颜⾊g2.drawLine(X, Y, X + data.hX, Y - data.hY);// 绘制时针// 绘制分针g2.setStroke(M);// 设置分针的宽度g2.setColor(Color.orange);// 设置时针的颜⾊g2.drawLine(X, Y, X + data.mX, Y - data.mY);// 绘制分针// 绘制秒针g2.setStroke(S);// 设置秒针的宽度g2.setColor(Color.GREEN);// 设置时针的颜⾊g2.drawLine(X, Y, X + data.sX, Y - data.sY);// 绘制秒针// 绘制中⼼圆g2.setColor(Color.BLUE);g2.fillOval(X - 5, Y - 5, 10, 10);}}这个是第三个,获取时钟的数据:package clock;import static java.util.Calendar.HOUR;import static java.util.Calendar.MINUTE;import static java.util.Calendar.SECOND;import java.util.Calendar;public class ClockData {public int sX, sY, mX, mY, hX, hY;public ClockData(int secLen, int minuesLen, int hoursLen) {Calendar calendar = Calendar.getInstance();// 获取⽇历对象int sec = calendar.get(SECOND);// 获取秒值int minutes = calendar.get(MINUTE);// 获取分值int hours = calendar.get(HOUR);// 获取时值// 计算⾓度int hAngle = hours * 360 / 12 + (minutes / 2) ;// 时针⾓度(每分钟时针偏移⾓度)int sAngle = sec * 6; // 秒针⾓度int mAngle = minutes * 6 + (sec / 10);// 分针⾓度// 计算秒针、分针、时针指向的坐标sX = (int) (secLen * Math.sin(Math.toRadians(sAngle)));// 秒针指向点的X坐标(将⾓度转换为弧度) sY = (int) (secLen * Math.cos(Math.toRadians(sAngle))); // 秒针指向点的Y坐标mX = (int) (minuesLen * Math.sin(Math.toRadians(mAngle))); // 分针指向点的X坐标mY = (int) (minuesLen * Math.cos(Math.toRadians(mAngle))); // 分针指向点的Y坐标hX = (int) (hoursLen * Math.sin(Math.toRadians(hAngle))); // 时针指向点的X坐标hY = (int) (hoursLen * Math.cos(Math.toRadians(hAngle))); // 时针指向点的Y坐标}}以上参考了其他⼤佬的代码,等我找到原地址再补上:D做了部分修改,加了部分注释,java⼩⽩还请客官您多多包含呀!。
java简易电子时钟代码Word版

import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.*;import java.text.SimpleDateFormat;public class ClockJFrame extends JFrame{private Date now=new Date();Panel buttons=new Panel();Button button_start=new Button("启动");Button button_interrupt=new Button("停止");Clock label=new Clock();public ClockJFrame() //构造方法{super("电子时钟");this.setBounds(300,240,300,120);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setLayout(new BorderLayout());this.getContentPane().add("North",label);//初始化一个容器,用来在容器上添加一个标签this.getContentPane().add("South",buttons);buttons.setLayout(new FlowLayout());buttons.add(button_start);buttons.add(button_interrupt);setVisible(true);}private class Clock extends Label implements ActionListener,Runnable{ private Thread clocker=null;private Date now=new Date();public Clock(){button_start.addActionListener(this);button_interrupt.addActionListener(this);SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");//可以方便地修改日期格式String t = dateFormat.format( now );this.setText(t);}public void start(){if(clocker==null){clocker=new Thread(this);clocker.start();}}public void stop(){clocker=null;}public void run(){Thread currentThread=Thread.currentThread();while(clocker==currentThread){now=new Date();SimpleDateFormat dateFormat = newSimpleDateFormat("HH:mm:ss");//可以方便地修改日期格式String t = dateFormat.format( now );this.setText(t);try{clocker.sleep(1000);}catch(InterruptedException ie){JOptionPane.showMessageDialog(this,"Thread error:+ie");}}}public void actionPerformed(ActionEvent e){if (e.getSource()==button_start) {clocker = new Thread(this); //重新创建一个线程对象clocker.start();button_start.setEnabled(false);button_interrupt.setEnabled(true);}if (e.getSource()==button_interrupt) //单击中断按钮时{clocker.stop(); //设置当前线程对象停止标记button_start.setEnabled(true);button_interrupt.setEnabled(false);}}}//内部类结束public static void main(String[] args) {ClockJFrame time=new ClockJFrame();}}运行结果:。
JAVA实验报告一(运用JavaFx画时钟)-推荐下载

一 概述
1. 课程设计的目的 1、 设计一个带有指针、数字时钟,能方便我们的使用和操作,
为我们以后的使用创造一个良好的平台。了解和掌握 JavaFx
基本概念和用法。
2、 把自己所学的理论知识运用到实际操作中去,以此来发现自
己的不足,及时的改正。在实际的操作中学习及运用还没有
学过的知识。最后在调试与测试的过程还可以提升自己的改
错能力也是自己经验的积累。
2. 课程设计的要求
编写一个模拟时钟程序,此程序在屏幕左方有一指针式钟面,右方有两个 矩形框,上面以数字方式显示日期和时间,该时间应与指针显示的时间一致, 下方的矩形框作为秒表。用菜单选项或按钮设置时间和秒表。时间不必与机器 系统时间相同,只要可任意设置即可。
在设计的过程中,需要用到 awt 组件和 Swing 容器与组件,布局管理器, 事件处理,绘制图形,还运用到了类的继承,事件监听器和线程。还有自己还 没有掌握的 2D 绘制图形,以及绘制各指针及之间的关系。为了完成自己的设 计,必须 API、教材以及相关的资料来解决这些尚未掌握的问题。
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电通,力1根保过据护管生高线产中0不工资仅艺料可高试以中卷解资配决料置吊试技顶卷术层要是配求指置,机不对组规电在范气进高设行中备继资进电料行保试空护卷载高问与中题带资2负料2,荷试而下卷且高总可中体保资配障料置2试时32卷,3各调需类控要管试在路验最习;大题对限到设度位备内。进来在行确管调保路整机敷使组设其高过在中程正资1常料中工试,况卷要下安加与全强过,看度并25工且52作尽22下可护都能1关可地于以缩管正小路常故高工障中作高资;中料对资试于料卷继试连电卷接保破管护坏口进范处行围理整,高核或中对者资定对料值某试,些卷审异弯核常扁与高度校中固对资定图料盒纸试位,卷置编工.写况保复进护杂行层设自防备动腐与处跨装理接置,地高尤线中其弯资要曲料避半试免径卷错标调误高试高等方中,案资要,料求编试技5写、卷术重电保交要气护底设设装。备备置管4高调、动线中试电作敷资高气,设料中课并技3试资件且、术卷料中拒管试试调绝路包验卷试动敷含方技作设线案术,技槽以来术、及避管系免架统不等启必多动要项方高方案中式;资,对料为整试解套卷决启突高动然中过停语程机文中。电高因气中此课资,件料电中试力管卷高壁电中薄气资、设料接备试口进卷不行保严调护等试装问工置题作调,并试合且技理进术利行,用过要管关求线运电敷行力设高保技中护术资装。料置线试做缆卷到敷技准设术确原指灵则导活:。。在对对分于于线调差盒试动处过保,程护当中装不高置同中高电资中压料资回试料路卷试交技卷叉术调时问试,题技应,术采作是用为指金调发属试电隔人机板员一进,变行需压隔要器开在组处事在理前发;掌生同握内一图部线纸故槽资障内料时,、,强设需电备要回制进路造行须厂外同家部时出电切具源断高高习中中题资资电料料源试试,卷卷线试切缆验除敷报从设告而完与采毕相用,关高要技中进术资行资料检料试查,卷和并主检且要测了保处解护理现装。场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
java课程设计小时钟

import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.awt.geom.*;import java.util.Date;class Clock1 extends Canvas implements ActionListener{ Date date ;javax.swing.Timer secondTime;int hour,munite,second;Line2D secondLine,muniteLine,hourLine;int a,b,c;double pointSX[]=new double[60],pointSY[]=new double[60],pointMX[]=new double[60],pointMY[]=new double[60],pointHX[]=new double[60],pointHY[]=new double[60];Clock1(){secondTime=new javax.swing.Timer(1000,this);pointSX[0]=0;pointSY[0]=-100;pointMX[0]=0;pointMY[0]=-90;pointHX[0]=0;pointHY[0]=-70;double angle=6*Math.PI/180;for(int i=0;i<59;i++){pointSX[i+1]=pointSX[i]*Math.cos(angle)-Math.sin(angle)*pointSY[i]; pointSY[i+1]=pointSY[i]*Math.cos(angle)+pointSX[i]*Math.sin(angle); pointMX[i+1]=pointMX[i]*Math.cos(angle)-Math.sin(angle)*pointMY[i]; pointMY[i+1]=pointMY[i]*Math.cos(angle)+pointMX[i]*Math.sin(angle); pointHX[i+1]=pointHX[i]*Math.cos(angle)-Math.sin(angle)*pointHY[i];pointHY[i+1]=pointHY[i]*Math.cos(angle)+pointHX[i]*Math.sin(angle); }for(int i=0;i<60;i++){pointSX[i]=pointSX[i]+120;pointSY[i]=pointSY[i]+120;pointMX[i]=pointMX[i]+120;pointMY[i]=pointMY[i]+120;pointHX[i]=pointHX[i]+120;pointHY[i]=pointHY[i]+120;}secondLine=new Line2D.Double(0,0,0,0);muniteLine=new Line2D.Double(0,0,0,0);hourLine=new Line2D.Double(0,0,0,0);secondTime.start();}public void paint(Graphics g){for(int i=0;i<60;i++){int m=(int)pointSX[i];int n=(int)pointSY[i];if(i%5==0){g.setColor(Color.red);g.fillOval(m-4,n-4,8,8);}else{g.setColor(Color.blue);g.fillOval(m-2,n-2,4,4);}}g.fillOval(115,115,10,10);Graphics2D g_2d=(Graphics2D)g;g_2d.setColor(Color.red);g_2d.draw(secondLine);BasicStroke bs=newBasicStroke(3f,BasicStroke.CAP_ROUND,BasicStroke.JOIN_MITER);g_2d.setStroke(bs);g_2d.setColor(Color.blue);g_2d.draw(muniteLine);bs=newBasicStroke(6f,BasicStroke.CAP_BUTT,BasicStroke.JOIN_MITER);g_2d.setStroke(bs);g_2d.setColor(Color.black);g_2d.draw(hourLine);}public void actionPerformed(ActionEvent e){if(e.getSource()==secondTime){date=new Date();String s=date.toString();hour=Integer.parseInt(s.substring(11,13));munite=Integer.parseInt(s.substring(11,13));second=Integer.parseInt(s.substring(11,13));int h=hour%12;a=second;b=munite;c=h*5+munite/12;secondLine.setLine(120,120,(int)pointSX[a],(int)pointSY[a]);secondLine.setLine(120,120,(int)pointMX[b],(int)pointMY[b]);secondLine.setLine(120,120,(int)pointHX[c],(int)pointHY[c]);repaint();}}}public class Clock{public static void main(String args[]){javax.swing.JFrame win=new javax.swing.JFrame();win.setSize(400,400);win.add(new Clock1());win.setVisible(true);}}。
java小闹钟

课程设计(综合实验)报告( 2011 -- 20112 年度第 1 学期)名称:课程或实验名称题目:迷你闹钟的设计与实现院系:经济与管理学院班级:信管1001班学号:1101300107学生姓名:李小鹏指导教师:梁春燕设计周数:一周成绩:日期:2012 年01 月06 日一、课程设计(综合实验)的目的与要求➢设计目的:通过迷你闹钟的设计和实现,考察学生对JA V A语言的掌握情况,并提高学生对图形用户界面的设计和编程能力。
➢设计要求:1.显示时间功能:迷你闹钟可以即时显示当前时间。
2.闹钟功能:能够根据用户设置的时间来提醒用户,可以用声音或者文字进行提醒。
3.时间设置功能:提供菜单来设置时钟的当前时间,和闹钟的提醒时间。
4.界面设计:可模拟真实钟表界面,也可以用数字界面显示。
要求美观、实用和个性化。
二、设计(实验)正文1.设计迷你闹钟的方法1.1利用CardLayout布局实现时间界面和设置闹钟界面的转换1.2在时间界面设置label1和label2实现当前时间的数字化显示,并利用Date类和SimpleDateFormate类实现界面显示“上午好”或“下午好”。
在label1上绘制模拟钟表实现模拟钟表的界面。
1.3在闹钟设置面板上添加当前时间,通过文本框和标签设置需要设置的闹钟的时、分、秒。
设置列表框提供闹钟的音乐以供选择。
设置开关按钮决定闹钟的开始和结束2.遇到问题2. 1 设置迷你闹钟的界面化时遇到问题通过参考已有的程序加以解决2. 2 设置“闹铃时间”、“开关按钮”、“背景音乐列表框”时,事件的触发和监控遇到问题,经过反复修改调试得到解决。
2. 3 闹铃背景音乐格式设置遇到问题,经过调试和格式转换解决3.待解决问题闹钟的思想是“北京时间”,所以背景音乐中有《天涯共此时》音乐,界面上有北京时间等标识本来想在界面上添加一幅具有北京特色的图片做背景,但反复尝试,遗憾的是均未能成功,添加的背景图片总被上层面板遮挡,希望老师给以指导。
JAVA线程程序设计(小时钟)实验报告(附完整代码)

JAVA线程程序设计(小时钟)实验报告(附完整代码)一、课题内容和要求内容:设计和编写一个编写一个指针式时钟程序,应用线程实现时钟的走动。
要求:本实验旨在通过实验,培养学生将JAVA 线程的相关知识点(包括线程调度,线程同步等)有机结合并加以综合应用,在实验中设计多线程程序的能力。
二、设计思路分析class Clock:一个指针式时钟的主类class Layout: 添加窗口和时钟组件class ClockPaint:定义时钟组件三、概要设计 public class Clock extends JFrame {public static void main(String[] s);}class Layout extends JFrame {public Layout();}class ClockPaint extends JPanel implements Runnable {int x, y, r; int h, m, s; double rad = Math、PI /180; public ClockPaint(int x, int y, int r);public voidpaint(Graphics g);public void run();}时钟的绘制:运行时钟:四、详细设计 import java、awt、*;import javax、swing、*;import java、util、*;public class Clock extends JFrame {public static void main(String[] s){new Layout();}}class Layout extends JFrame {// 添加窗口和时钟组件public Layout(){ClockPaint cp = newClockPaint(20,20,70);add(cp);setBounds(260,120,200,200);s etResizable(false);this、setTitle("指针式时钟");this、setVisible(true);}}class ClockPaint extends JPanel implements Runnable {// 定义时钟组件int x, y, r;// 时钟的位置坐标和半径int h, m, s;// 小时,分钟,秒double rad = Math、PI /180;// 定义弧度public ClockPaint(int x, int y, int r){// 构造函数this、x = x;this、y = y;this、r =r;Calendar now = Calendar、getInstance();// 初始化日历对象s = now、get(Calendar、SECOND)*6;// 获得初始秒转换成度数m = now、get(Calendar、MINUTE)*6;// 获得初始分钟转换成度数h = (now、get(Calendar、HOUR_OF_DAY)2)* Math、sin(rad * d));y1 = (int)((r1, x + r14)* Math、sin(rad * d));y1 = (int)((r4, x + r6)* Math、sin(rad * d));y1 = (int)((r2)* Math、sin(rad * d));y2 = (int)((r y2, x + r + x1, y + r y1);g、setColor(Color、BLUE);// 按时间画分针x1 = (int)((0、6 * r)* Math、sin(rad * m));y1 = (int)((0、6 * r)* Math、cos(rad * m));g、drawLine(x + r, y + r, x + r + x1, y + r y1);g、setColor(Color、GREEN);// 显示时间Calendar now1 = Calendar、getInstance();g、drawString(now1、get(Calendar、HOUR_OF_DAY)+ ":"+ now1、get(Calendar、MINUTE)+ ":"+ now1、get(Calendar、SECOND), 0,10);}public void run(){// 运行时钟while (true){try {Thread、sleep(1000);// 中断一秒后重新运行} catch (Exception ex){System、out、println(ex);}s +=6;// 秒针走6度if(s >=360){// 秒针走完一分钟后重置s = 0;m +=6;if (m ==72 || m ==144 || m ==216 || m ==288){// 分针走完5分钟后重置h +=6;}if (m >=360){// 分针走完一小时后重置m = 0;h +=6;}if (h >=360){// 时针走完12小时后重置h = 0;}}this、repaint();// 重新绘制时钟}}}五、测试数据及其结果分析1时钟界面:2结果:输出正常。
JAVA时钟程序

编号:Z04500052课 程 设 计2014 年 6 月 15 日学 号:2教 学 院 计算机学院 课程名称 JA V A 课程设计题 目 时钟程序专 业 13应用技术 班 级 应用技术(1)班姓 名 张琳同组人员 刘敏 陈碧菲 周丹丹 田琼玲指导教师伍红华目录一.问题分析和任务定义 ........................................ 错误!未定义书签。
二.逻辑设计............................................................. 错误!未定义书签。
三.详细设计............................................................. 错误!未定义书签。
四.程序编码............................................................. 错误!未定义书签。
五.程序调试与测试 ................................................ 错误!未定义书签。
六.结果分析............................................................. 错误!未定义书签。
七. 附录 (8)八. 参考文献 (9)一.问题分析和任务定义1.问题分析此次课程设计的题目为简单的小时钟程序设计,通过做巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK等开发工具的运用,拓宽常用类库的应用。
运用了鼠标的监听和事件的监听以及侦听的技术来时钟的功能。
时钟可以分为:电子时钟,数字时钟。
其中数字时钟包括表盘,数字,指针。
用JPanel类来指定布局管理器,同时新增一个功能也是设计需求的功能,可以随时的调时间,运用到鼠标和按钮的监听效果来完成调时间的功能。
JAVA实验报告一(运用JavaFx画时钟)

JA V A实验报告实验一运用JavaFx画时钟班级:计算机科学与技术1306 学号:***********名:***指导教师:***2014 年12 月 1 日目录一.概述 (3)二.总体方案设计 (4)三.详细设计 (4)四.程序的调试与运行结果说明 (5)五.课程设计总结 (6)六.后记 (6)七.附录 (6)参考文献 (11)一概述1.课程设计的目的1、设计一个带有指针、数字时钟,能方便我们的使用和操作,为我们以后的使用创造一个良好的平台。
了解和掌握JavaFx基本概念和用法。
2、把自己所学的理论知识运用到实际操作中去,以此来发现自己的不足,及时的改正。
在实际的操作中学习及运用还没有学过的知识。
最后在调试与测试的过程还可以提升自己的改错能力也是自己经验的积累。
2.课程设计的要求编写一个模拟时钟程序,此程序在屏幕左方有一指针式钟面,右方有两个矩形框,上面以数字方式显示日期和时间,该时间应与指针显示的时间一致,下方的矩形框作为秒表。
用菜单选项或按钮设置时间和秒表。
时间不必与机器系统时间相同,只要可任意设置即可。
在设计的过程中,需要用到awt组件和Swing容器与组件,布局管理器,事件处理,绘制图形,还运用到了类的继承,事件监听器和线程。
还有自己还没有掌握的2D绘制图形,以及绘制各指针及之间的关系。
为了完成自己的设计,必须API、教材以及相关的资料来解决这些尚未掌握的问题。
老师的要求就是尽量实现设计的功能,尽可能的锻炼自己的动手能力,提高自己的基础知识。
3.课程设计的主要设计思想先是利用构造函数创建一个长为500,宽为200的窗体,颜色设置为black,并把窗体设计为固定大小,并且创建一个监听事件进行监听。
随即创建一个时间计数器,最后实现ActionListener接口的实现方法。
利用2D绘制图形的方法,在窗体左方画一个圆,并且绘制时钟上的12个数字刻度,然后利用Calendar类提供的HOUR,MINUTE,SECOND和MILLISECOND方法获得现在的时间,在计算时间和度数的关系;在利用2D绘制图形的方法绘制出各指针,并设置不同的颜色。
Java钟摆实验报告

Java程序设计实验报告题目钟摆姓名马彦彬学号220800234学院软件学院专业软件工程年级2008级指导教师张舒2010年12月21日一、实验目的1、熟练掌握Applet编程技术。
2、掌握Swing图形用户界面编程,掌握java绘图技术。
3、掌握多线程编程的基本原理,能使用Runnable等接口进行线程的创建、启动等工作,并能利用线程和绘图,实现动画效果。
4、培养独立查找资料,并解决问题的能力。
二、实验任务1、设计并编程实现摆钟程序:钟摆以及秒针随时间走动或左右摆动,每秒钟摆左右摆动一回。
当时间到达整点时,时钟能产生整点报时,播放整点报时音乐,并以显示对应时刻的十二生肖图片。
2、程序要求:(1)将程序设计成为Applet小应用程序。
(2)利用Applet的各种方法加载摆钟素材图片,显示为如下效果:(3)使用多线程技术,让钟摆以及表盘中的秒针随时间走动。
钟摆的运动方式是每秒左右摆动一次。
表盘中的秒针、分针、时针按照真实钟表的走动方式。
(4)摆钟下方以数字时钟方式显示时间,如上图。
(5)可使用GregorianCalendar、Date、SimpleDateFormat、Calendar等类来处理系统时间,格式问题。
(6)可使用双缓冲等技术使动画更为平滑。
3、可使用附件中提供的素材,也可以自行下载各种所需素材三、开发工具与平台JDK1.6+eclipse四、设计思路1、界面设计设计一个简单的面板,在上面画字符,图片,播放声音。
2、逻辑设计Applet程序初始化,加载图片,时间。
并运行start()Start中创建一个线程。
该线程重新加载时间,使界面每秒重绘一程序退出次。
3、程序测试五、实验总结这次实验,主要学习了java Applet如何使用,利用Applet来画图,加载系统时间等等,并了解了applet运行的一般过程。
这次实验难度并不大,但是实验中还存在许多问题,需要努力学习。
六、附录无。
java多线程实验报告及代码

1、runners是一个SelfishRunner类型的数组,这个数组里有两个元素;循环执行
题目二:
能实现一个线程进行阶乘和的运算(1!+2!+3!+……+100!),每次计算时间随机间隔1-10毫秒;另一个线程每隔10毫秒时间读取并显示上个线程的运算结果和计算进程。
但是在界面上显示结果时遇到问题,并且不知道问题出在哪里。
三、实验结果
实验结果部分截图:
四、讨论与分析
题目一:
7-1
此程序共有两个线程,一个主线程,一个用户线程,主线程执行5次,而用户线程执行10次;
7-2
1、Timer t =newTimer(true);一个计时器,Timer()后的参数代表是不是一个首部线程,若true:这个计时器是守护线程,这个计时器在main方法中被调用,那么也应该是主线程,所以这个计时器停止时,整个程序也就停止了;即对此程序而言只执行十二次(由t.schedule()决定);若为false,则主线程与计时器独立。
五、附录:关键代码
一个线程进行阶乘和的运算(1!+2!+3!+……+100!),每次计算时间随机间隔1-10毫秒;另一个线程每隔10毫秒时间读取并显示上个线程的运算结果和计算进程。
package jiecheng;
public class jiec {
public static void main(String[] args) {
设计一个窗体,以进度条的形式显示计算线程的执行进程。
详细说明界面设计过程,并分析程序的执行结果;
二、实验过程
1、将7-1、7-2、7-3的源代码写入,分析输出结果并总结输出结果与分析结果的异同;
JAVA线程程序设计实验报告

线程程序设计一、课题内容和要求内容:设计和编写一个编写一个指针式时钟程序,应用线程实现时钟的走动。
要求:本实验旨在通过实验,培养学生将JAVA 线程的相关知识点(包括线程调度,线程同步等)有机结合并加以综合应用,在实验中设计多线程程序的能力。
二、设计思路分析class Clock:一个指针式时钟的主类class Layout: 添加窗口和时钟组件class ClockPaint:定义时钟组件三、概要设计public class Clock extends JFrame {public static void main(String[] s) ;}class Layout extends JFrame {public Layout();}class ClockPaint extends JPanel implements Runnable {int x, y, r;int h, m, s;double rad = Math.PI / 180;public ClockPaint(int x, int y, int r);public void paint(Graphics g);public void run();}时钟的绘制:运行时钟:四、详细设计import java.awt.*;import javax.swing.*;import java.util.*;public class Clock extends JFrame {public static void main(String[] s) {new Layout();}}class Layout extends JFrame {// 添加窗口和时钟组件public Layout() {ClockPaint cp = new ClockPaint(20, 20, 70);add(cp);setBounds(260, 120, 200, 200);setResizable(false);this.setTitle("指针式时钟");this.setVisible(true);}}class ClockPaint extends JPanel implements Runnable {// 定义时钟组件int x, y, r;// 时钟的位置坐标和半径int h, m, s;// 小时,分钟,秒double rad = Math.PI / 180;// 定义弧度public ClockPaint(int x, int y, int r) {// 构造函数this.x = x;this.y = y;this.r = r;Calendar now = Calendar.getInstance();// 初始化日历对象s = now.get(Calendar.SECOND) * 6;// 获得初始秒转换成度数m = now.get(Calendar.MINUTE) * 6;// 获得初始分钟转换成度数h = (now.get(Calendar.HOUR_OF_DAY) - 12) * 30+ now.get(Calendar.MINUTE) * 6 / 12;// 获得初始小时转换成度数加分钟实现连贯Thread t = new Thread(this);// 新建线程t.start();// 启动线程}public void paint(Graphics g) {// 绘制时钟g.setColor(Color.BLACK);// 画背景g.fillRect(0, 0, r * 3, r * 3);g.setColor(Color.WHITE);// 画圆g.drawOval(x, y, r * 2, r * 2);int d = 0;// 每6度画一个小点int x1, y1, x2, y2;for (int i = 0; i < 60; i++) {x1 = (int) ((r - 2) * Math.sin(rad * d));y1 = (int) ((r - 2) * Math.cos(rad * d));g.drawString(".", x + r + x1 - 1, x + r - y1 + 1);d += 6;}d = 30;// 从30度开始每30度画一个数字和一线for (int i = 1; i <= 12; i++) {x1 = (int) ((r - 14) * Math.sin(rad * d));y1 = (int) ((r - 14) * Math.cos(rad * d));g.drawString(i + "", x + r + x1 - 4, x + r - y1 + 5);x1 = (int) ((r - 6) * Math.sin(rad * d));y1 = (int) ((r - 6) * Math.cos(rad * d));x2 = (int) ((r - 2) * Math.sin(rad * d));y2 = (int) ((r - 2) * Math.cos(rad * d));g.drawLine(x + r + x2, y + r - y2, x + r + x1, y + r - y1);d += 30;}g.setColor(Color.RED);// 按时间画秒针x1 = (int) ((0.8 * r) * Math.sin(rad * s));y1 = (int) ((0.8 * r) * Math.cos(rad * s));g.drawLine(x + r, y + r, x + r + x1, y + r - y1);g.setColor(Color.BLUE);// 按时间画分针x1 = (int) ((0.6 * r) * Math.sin(rad * m));y1 = (int) ((0.6 * r) * Math.cos(rad * m));g.drawLine(x + r, y + r, x + r + x1, y + r - y1);g.setColor(Color.YELLOW);// 按时间画时针x1 = (int) ((0.4 * r) * Math.sin(rad * h));y1 = (int) ((0.4 * r) * Math.cos(rad * h));g.drawLine(x + r, y + r, x + r + x1, y + r - y1);g.setColor(Color.GREEN);// 显示时间Calendar now1 = Calendar.getInstance();g.drawString(now1.get(Calendar.HOUR_OF_DAY) + ":"+ now1.get(Calendar.MINUTE) + ":"+ now1.get(Calendar.SECOND), 0, 10); }public void run() {// 运行时钟while (true) {try {Thread.sleep(1000);// 中断一秒后重新运行} catch (Exception ex) {System.out.println(ex);}s += 6;// 秒针走6度if (s >= 360) {// 秒针走完一分钟后重置s = 0;m += 6;if (m == 72 || m == 144 || m == 216 || m == 288) {// 分针走完5分钟后重置h += 6;}if (m >= 360) {// 分针走完一小时后重置m = 0;h += 6;}if (h >= 360) {// 时针走完12小时后重置h = 0;}}this.repaint();// 重新绘制时钟}}}五、测试数据及其结果分析1时钟界面:2结果:输出正常。
Java课程设计报告(LED时钟)

攀枝花学院学生课程设计(论文)题目: LED时钟学生姓名:张奕学号: 201210802028 所在院(系):数学与计算机学院专业:信息与计算科学班级: 2012级信息与计算科学1班指导教师:吴建兵职称:讲师二O一四年六月十六日攀枝花学院教务处制攀枝花学院本科学生课程设计任务书题目时钟(LED方式)1、课程设计的目的通过本课程设计使学生能够较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力。
2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等)编写一个时钟(LED方式)程序,要求:(1)在屏幕上用文字显示日期(年、月、日、星期)与时间。
(2)时间显示要求能动态显示时、分、秒。
3、主要参考文献[1]朱福喜.《Java语言程序设计》(第二版).科学出版社[2]陈国君等.《Java程序设计基础》(第二版).清华大学出版社[3] Deitel.《Java大学基础教程》(第六版).电子工业出版社[4] MaryCampione.《Java语言导学》(第四版).机械工业出版社[5] Y.Daniel Liang.《Java语言程序设计基础篇》(第六版). 机械工业出版社[6] Kathy Sierra.《Head First Java》(第二版).东南大学出版社4、课程设计工作进度计划1、设计动员,布置任务,选题(1天)2、查阅资料,分析、讨论与设计(1天)3、编写程序,进行调试(4天)4、完成模块联调,进行测试(2天)5、成果验收,完成设计报告(2天)指导教师(签字)日期年月日教研室意见:年月日学生(签字):接受任务时间:年月日注:任务书由指导教师填写。
课程设计(论文)指导教师成绩评定表题目名称时钟(LED方式)评分项目分值得分评价内涵工作表现20% 01 学习态度 6 遵守各项纪律,工作刻苦努力,具有良好的科学工作态度。
02 科学实践、调研7 通过实验、试验、查阅文献、深入生产实践等渠道获取与课程设计有关的材料。
(完整版)Java程序设计实验报告

Java 程序设计实验报告实验一实验题目:从键盘上读入10 个字符串存入数组 a 中,而后输出这10个字符串中最大字符串和最小字符串。
实验代码:public class StrPro {public static void main(String[] args) {String str[] =new String[5];System. out .println("Please input 10 strings :" );int i;String max,min;for (i=0;i<5;i++){System. out .print( "Please input the " +(i+1)+ " string:" );Scanner sc = new Scanner(System. in );str[i] = sc.nextLine();}max = str[0];min = str[0];for (i=0;i<str.length ;i++){if (pareTo(str[i])<0){max = str[i];}if (pareTo(str[i])>0){min = str[i];}}System. out .println( System. out .println( " 最大的字符串为: " +max); " 最小的字符串为: " +min);}}实验结果:实验心得领会:掌握了 java 的基本语法,数组的定义与使用,做这个实验要了解字符串数组的定义及字符串数组的输入方法,还有比较字符串数组的大小的调用方法等。
实验二实验题目:自定义一个矩形类( Rectangle ),包括的属性有:长( length ),宽(width ),包括的方法有:对于属性的 setter 和 getter 方法,即 setLength ,getLength ,setWidth ,getWidth ,计算矩形面积的方法(g etArea )。
JAVA课程设计钟表(含代码)

Java程序课程设计任务书钟表的设计与开发1、主要内容:创建一个钟表。
借助swing类和接口内部类的实现,在本程序中以实现Runnable接口内部类的形式创建多线程对象。
Runnable接口只定义了一个run()方法,所以调用start和sleep()方法时,必须创建Thread实例化对象。
Interrupt()方法的作用是中断线程。
其作用方式是:多线程对象.interrupt()。
2、具体要求(包括技术要求等):系统的功能要求:1.可以记录时间的钟表。
2.熟悉JAVA中swing的组件运用,基本工具的熟练掌握。
学习并掌握以下技术:Java等。
熟练使用以下开发工具:JCreator + JDK 1.6.0_02 等实现系统上述的功能。
3、进度安排:12月28日~ 12月29日:课程设计选题,查找参考资料12月29日~ 1月2日:完成程序代码的编写1月2日~ 1月3日:系统测试与完善1月4日~ 1月5日:完成课程设计报告,准备答辩4、主要参考文献[1]张帆.Java范例开发大全[M].北京:清华大学出版社,2010:0-831.[2]耿祥义,张跃平.Java大学实用教程[M].北京电子工业出版社,2008:213-216摘要随着经济全球化的发展,推动生活节奏的加快,也给时间赋予了更重要的意义。
基于方便人们更好的掌握时间,我们小组设计出了这个小时钟。
本时钟是一个基于Java语言设计而成的一个小程序,目的是显示时间,并且能调准时钟。
整个程序从符合操作简便、界面友好、灵活使用的要求出发,完成调用、调整的全过程。
本课程设计报告介绍了时钟的构成,论述了目标功能模块;给出了时钟设计的步骤,程序主要所用到的Swing组件以及graphics方法。
关键词:时钟,目录摘要 (II)目录 ......................................................................................................................................................... I II 第1章引言 .. (1)1.1课程设计内容 (1)1.2任务分工 (1)第2章时钟的设计 (2)2.1时钟功能的概述 (2)2.1.1时钟数字显示 (2)2.1.2时钟指针显示 (2)2.1.2时钟的设置 (2)第3章时钟的具体实现 (3)3.1界面设计 (3)3.1.1程序流程图 (3)3.1.1显示数字时钟效果 (3)3.1.2显示指针时钟完全效果图 (4)3.1.3设置窗口效果图 (6)第4章结束语 (8)致谢 (8)附录源代码 (9)第1章引言1.1课程设计内容本时钟编写时用到了Java中的Swing组件以及graphics方法,并具有下列处理功能(1)显示时钟功能显示钟表时间和数字时间(2)状态的可切换通过调整框图的大小,可以在数字时钟和指针时钟之间进行切换。
java闹钟程序设计

j a v a闹钟程序设计------------------------------------------作者xxxx------------------------------------------日期xxxx《JAVA程序设计》课程设计报告班级软件1301班姓名徐畅学号13号电子邮件849286847@指导教师张暑军时间2014/2015学年第一学期第20周承德石油高等专科学校计算机与信息工程系二零一五年一月十二日目录一系统需求描述 (4)二设计思路 (4)三实现描述 (6)四常见问题及解决方法 (8)五总结 (8)一系统需求描述1.任务描述:我国现在在各个方面发展迅猛,民众的生活质量得到极大的提高。
与此同时,根据时代的要求,人们的生活节奏也随之加快。
人们都要求自己在很短的时间尽量做到最多的事。
所以开发一款能让人们能将其所有的事有序地组织起来,同时又能提醒在什么时间该做什么事的软件是很有必要的。
虽然目前这样软件很多功能虽强大,但是用起来都很复杂,有些功能并不实用,操作也太麻烦。
该课题的终极目标是开发一个实用,操作便捷的桌面闹钟应用程序,达到在日常生活工作中可以合理利用时间从而大大地提高人们的工作效率。
用java 语言实现时钟闹钟的设计,设计的时钟闹铃能够完成以下功能:正确的指针位置、日期、时间的数字显示;在设定的时间用铃声提醒,若当前时间为设置的时间时,会伴随着铃声,时间持续约1分钟。
若关闭闹铃,则铃声停止。
2.需求分析:(1)该闹铃系统可用于到时响铃功能(可设置多组闹铃);(2)该闹铃系统只需要用户给其设置闹铃时间;(3)该闹铃系统与用户的交互完全靠按键实现;(4)该闹铃系统界面在外观上要求美观。
其中最重要的是闹铃的可操作性强,能够完成必要的功能;(5)该闹铃系统的相应时间0.1秒左右。
(6)该闹铃系统出现故障时,重启系统即可。
二设计思路1.实验目的:通过时钟闹铃的设计和实现,充分掌握java语言,提高对图形界面及小程序的设计和编程能力。
简单时钟java程序

简单时钟java程序import java.awt.Container;import java.awt.GridLayout;import java.text.DateFormat;import java.util.Calendar;import java.util.Date;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;class MyThread1 extends JPanel implements Runnable {int h, m, s;JLabel time1 = new JLabel();public MyThread1() { // 编写子类的构造方法this.add(time1);}public void run() { // 定义线程体,编写线程代码while (true) {Date now = new Date();DateFormat df = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG); // 显示日期。
时间(精确到秒)String str = df.format(now);time1.setText("");time1.setText(str); // 显示时间try {Thread.sleep(1000); // 休眠1秒} catch (InterruptedException e) {}}}class MyThread2 extends JPanel implements Runnable { int h, m, s;Thread t;JLabel time2 = new JLabel();public MyThread2(Thread thread) { // 编写子类的构造方法t = thread;this.add(time2);}public void run() { // 定义线程体,编写线程代码while (true) {Calendar ca = Calendar.getInstance();int h = ca.get(Calendar.HOUR);// 小时int m = ca.get(Calendar.MINUTE);// 分int s = ca.get(Calendar.SECOND);// 秒if (m == 0 && s == 0) {t.suspend(); // 挂起线程tfor (int i = 1; i < 5; i++) {time2.setText("整点报时!现在时间" + h + "点整!");try {Thread.sleep(500);} catch (InterruptedException e) {}time2.setText("");try {Thread.sleep(480);} catch (InterruptedException e) {}}t.resume(); // 恢复线程t}}}public class ShiYan13_1 extends JFrame {MyThread1 trun1 = new MyThread1();MyThread2 trun2 = null;ShiYan13_1() {super("整点报时");Thread t1 = new Thread(trun1);t1.start();Container c = this.getContentPane();c.setLayout(new GridLayout(3, 1));c.add(new JLabel("现在时间是:"));c.add(trun1);trun2 = new MyThread2(t1);c.add(trun2);Thread t2 = new Thread(trun2);t2.start();this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setSize(250, 200);this.setVisible(true);}public static void main(String args[]) {new ShiYan13_1();}}。
JAVA计时器(秒表)程序代码

Java计时器(秒表)功能:能实现计时,暂停,清零,记录功能。
如下图:程序运行状态:源代码:import javax.swing.*;import java.awt.*;import java.awt.event.*;public class Test {public static void main(String[] args){new window("计时器");}}class window extends JFrame{int ON=0,i=0,j=0,k=0,count=0,num=1,R=0;JButton button1,button2,button3,button4,button5;JTextField file1,file2,file3;JTextArea file;FlowLayout flow;String a,b,c;window(String name){file1=new JTextField(2);file2=new JTextField(2);file3=new JTextField(2);file1.setEditable(false);file2.setEditable(false);file3.setEditable(false);file=new JTextArea(10,8);file.setEditable(false);button1=new JButton("开始");button2=new JButton("暂停");button3=new JButton("清零"); button4=new JButton("记录"); button5=new JButton("清空记录"); flow=new FlowLayout();flow.setAlignment(FlowLayout.LEFT); flow.setHgap(20);flow.setVgap(10);setTitle(name);setSize(210,400);setLayout(flow);add(file1);add(new JLabel(":"));add(file2);add(new JLabel(":"));add(file3);add(button1);add(button2);add(button3);add(button4);add(button5);add(file);setVisible(true);setDefaultCloseOperation(EXIT_ON_CLOSE);file1.setText("0");file2.setText("0");file3.setText("0");validate();button1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ON=1; //开始,暂停控制开关}}); //开始按钮button2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e){ ON=0;}}); //暂停按钮button3.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e){ R=1; //清零控制开关}}); //清零按钮button4.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e){count=1; //记录控制开关a=String.valueOf(i);b=String.valueOf(j);c=String.valueOf(k);}}); //记录按钮button5.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e){file.setText("");num=1;}}); //清除记录按钮while(true){validate();if(ON==1) //开始或暂停判断{file1.setText(String.valueOf(i));file2.setText(String.valueOf(j));file3.setText(String.valueOf(k));. if(k==99){k=-1;j++;}if(j==60){k=0;j=0;i++;}if(i==24){i=0;j=0;k=0;}try{Thread.sleep(10); }catch(Exception e){}k++;}if(count==1)//记录判断{file.append(String.valueOf(num));file.append(". ");file.append(a);file.append(":");file.append(b);file.append(":");file.append(c);file.append("\n");num++;count=0;}if(R==1)//清零判断{i=j=k=0;file1.setText(String.valueOf(i));file2.setText(String.valueOf(j));file3.setText(String.valueOf(k));R=0;}}}}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
线程程序设计
一、课题内容和要求
内容:设计和编写一个编写一个指针式时钟程序,应用线程实现时钟的走动。
要求:本实验旨在通过实验,培养学生将JAVA 线程的相关知识点(包括线程调度,线程同步等)有机结合并加以综合应用,在实验中设计多线程程序的能力。
二、设计思路分析
class Clock:一个指针式时钟的主类
class Layout: 添加窗口和时钟组件
class ClockPaint:定义时钟组件
三、概要设计
public class Clock extends JFrame {
public static void main(String[] s) ;
}
class Layout extends JFrame {
public Layout();
}
class ClockPaint extends JPanel implements Runnable {
int x, y, r;
int h, m, s;
double rad = Math.PI / 180;
public ClockPaint(int x, int y, int r);
public void paint(Graphics g);
public void run();
}
时钟的绘制:
运行时钟:
四、详细设计
import java.awt.*;
import javax.swing.*;
import java.util.*;
public class Clock extends JFrame {
public static void main(String[] s) {
new Layout();
}
}
class Layout extends JFrame {// 添加窗口和时钟组件public Layout() {
ClockPaint cp = new ClockPaint(20, 20, 70);
add(cp);
setBounds(260, 120, 200, 200);
setResizable(false);
this.setTitle("指针式时钟");
this.setVisible(true);
}
}
class ClockPaint extends JPanel implements Runnable {// 定义时钟组件
int x, y, r;// 时钟的位置坐标和半径
int h, m, s;// 小时,分钟,秒
double rad = Math.PI / 180;// 定义弧度
public ClockPaint(int x, int y, int r) {// 构造函数
this.x = x;
this.y = y;
this.r = r;
Calendar now = Calendar.getInstance();// 初始化日历对象
s = now.get(Calendar.SECOND) * 6;// 获得初始秒转换成度数
m = now.get(Calendar.MINUTE) * 6;// 获得初始分钟转换成度数
h = (now.get(Calendar.HOUR_OF_DAY) - 12) * 30
+ now.get(Calendar.MINUTE) * 6 / 12;// 获得初始小时转换成度数加分钟实现连贯
Thread t = new Thread(this);// 新建线程
t.start();// 启动线程
}
public void paint(Graphics g) {// 绘制时钟
g.setColor(Color.BLACK);// 画背景
g.fillRect(0, 0, r * 3, r * 3);
g.setColor(Color.WHITE);// 画圆
g.drawOval(x, y, r * 2, r * 2);
int d = 0;// 每6度画一个小点
int x1, y1, x2, y2;
for (int i = 0; i < 60; i++) {
x1 = (int) ((r - 2) * Math.sin(rad * d));
y1 = (int) ((r - 2) * Math.cos(rad * d));
g.drawString(".", x + r + x1 - 1, x + r - y1 + 1);
d += 6;
}
d = 30;// 从30度开始每30度画一个数字和一线
for (int i = 1; i <= 12; i++) {
x1 = (int) ((r - 14) * Math.sin(rad * d));
y1 = (int) ((r - 14) * Math.cos(rad * d));
g.drawString(i + "", x + r + x1 - 4, x + r - y1 + 5);
x1 = (int) ((r - 6) * Math.sin(rad * d));
y1 = (int) ((r - 6) * Math.cos(rad * d));
x2 = (int) ((r - 2) * Math.sin(rad * d));
y2 = (int) ((r - 2) * Math.cos(rad * d));
g.drawLine(x + r + x2, y + r - y2, x + r + x1, y + r - y1);
d += 30;
}
g.setColor(Color.RED);// 按时间画秒针
x1 = (int) ((0.8 * r) * Math.sin(rad * s));
y1 = (int) ((0.8 * r) * Math.cos(rad * s));
g.drawLine(x + r, y + r, x + r + x1, y + r - y1);
g.setColor(Color.BLUE);// 按时间画分针
x1 = (int) ((0.6 * r) * Math.sin(rad * m));
y1 = (int) ((0.6 * r) * Math.cos(rad * m));
g.drawLine(x + r, y + r, x + r + x1, y + r - y1);
g.setColor(Color.YELLOW);// 按时间画时针
x1 = (int) ((0.4 * r) * Math.sin(rad * h));
y1 = (int) ((0.4 * r) * Math.cos(rad * h));
g.drawLine(x + r, y + r, x + r + x1, y + r - y1);
g.setColor(Color.GREEN);// 显示时间
Calendar now1 = Calendar.getInstance();
g.drawString(
now1.get(Calendar.HOUR_OF_DAY) + ":"
+ now1.get(Calendar.MINUTE) + ":"
+ now1.get(Calendar.SECOND), 0, 10); }
public void run() {// 运行时钟
while (true) {
try {
Thread.sleep(1000);// 中断一秒后重新运行} catch (Exception ex) {
System.out.println(ex);
}
s += 6;// 秒针走6度
if (s >= 360) {// 秒针走完一分钟后重置
s = 0;
m += 6;
if (m == 72 || m == 144 || m == 216 || m == 288) {// 分针走完5分钟后重置
h += 6;
}
if (m >= 360) {// 分针走完一小时后重置
m = 0;
h += 6;
}
if (h >= 360) {// 时针走完12小时后重置
h = 0;
}
}
this.repaint();// 重新绘制时钟
}
}
}
五、测试数据及其结果分析
1时钟界面:
2结果:输出正常。
六、调试过程中的问题
一开始没有考虑分钟走五分钟时针应走一小格,在参考机械时钟的设计后,实现了时钟的连贯走动。
七、程序设计总结
1、通过该实验掌握了应用线程实现时钟的走动的方法。
2、学会了编写时钟的算法、多线程的设计与使用。
3、在逐步地优化和调试中实现了一个较切合实际的时钟界面。