Java应用 简易闹钟设计
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简易电子时钟代码
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课程设计闹钟
java课程设计闹钟一、教学目标本章节的教学目标分为三个部分:知识目标、技能目标和情感态度价值观目标。
知识目标:学生需要掌握Java基础语法、面向对象编程思想、事件处理机制等知识。
技能目标:学生能够运用Java语言实现一个简单的闹钟程序,具备分析和解决问题的能力。
情感态度价值观目标:培养学生对编程的兴趣,增强其自主学习和创新意识。
二、教学内容本章节的教学内容主要包括以下几个部分:1.Java基础语法:变量、数据类型、运算符、控制结构等。
2.面向对象编程:类、对象、封装、继承、多态等。
3.事件处理机制:事件监听器、事件处理函数等。
4.闹钟程序实现:分析需求、设计界面、编写代码、调试运行等。
三、教学方法本章节的教学方法采用讲授法、案例分析法和实验法相结合的方式。
1.讲授法:用于讲解Java基础语法和面向对象编程知识。
2.案例分析法:通过分析实际案例,让学生理解事件处理机制和闹钟程序的实现。
3.实验法:让学生动手编写和运行代码,培养实际操作能力。
四、教学资源本章节的教学资源包括教材、多媒体资料和实验设备。
1.教材:用于引导学生学习Java基础语法和面向对象编程知识。
2.多媒体资料:用于辅助讲解和展示案例分析,增强学生的学习兴趣。
3.实验设备:为学生提供实践操作的平台,培养实际编程能力。
五、教学评估本章节的评估方式包括平时表现、作业和考试三个部分,以保证评估的客观性和公正性。
1.平时表现:通过课堂参与、提问、讨论等方式评估学生的学习态度和积极性。
2.作业:布置与章节内容相关的编程作业,评估学生的理解和应用能力。
3.考试:期末进行闭卷考试,全面测试学生对Java基础语法、面向对象编程和事件处理机制的掌握程度。
六、教学安排本章节的教学安排如下:1.教学进度:按照教材的章节顺序进行教学,确保学生系统地掌握知识。
2.教学时间:共计30课时,每课时45分钟,包括课堂讲解、案例分析和实验操作。
3.教学地点:教室和计算机实验室,以便学生进行实际操作。
Java模拟时钟制作案例
美化指针
调用AffineTransform
public AffineTransform sc =new AffineTransform(); sc.setToRotation(Math.PI/30f*(s1-15),125,125); g2.fill(tick_s.createTransformedShape(sc));
程序代码
主类
程序代码
程序代码
运行效果
运行效果
面板刻度
绘制刻度
l1=new Line2D.Double[60]; for(int i=0 ;i<l1.length;i++) { double b[]=new double[4]; int j; if(i%5==0){ if(i%15==0){ j=50; }else { j=60; }
运行效果程序代码程序代码程序代码程序代码程序代码代码优化与改进以上的代码已经能基本完成时钟的功能
Java模拟时钟制 作案例
Java开发实例
需求分析
模拟时钟,把它放在程序中可以给人一种清 新的感觉。比起数字时钟来说,有一定的真 实感怀旧情结。看到秒针一下一下的转动, 时时提醒,时间在不断流逝,要我们珍惜时 间。 子在川上曰:逝者如斯夫。
坐标的转换,使用方法
调用方法:
p0=xy(125,125,75,s1*6); s.x1=p0.getX(); s.y1=p0.getY(); p0=xy(125,125,65,m1*6); m.x1=p0.getX(); m.y1=p0.getY(); p0=xy(125,125,55,(h1*30+m1/2f)); h.x1=p0.getX(); h.y1=p0.getX();
java时钟小程序课程设计
java时钟小程序课程设计一、课程目标知识目标:1. 理解Java编程语言中时间处理的基本概念;2. 掌握使用Java语言实现时钟小程序的核心语法,如线程控制、事件处理等;3. 学习Java中日期时间API的使用,如java.util.Calendar和java.time包;4. 了解界面设计中布局管理器的应用。
技能目标:1. 能够编写Java程序,实现一个具有基本计时功能的时钟小程序;2. 能够运用所学知识,对时钟小程序进行界面设计和优化;3. 学会使用调试工具,进行程序错误排查和修正;4. 培养问题解决和编程实践能力,能够独立完成时钟小程序的开发。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发创造力和探究精神;2. 增强学生的团队合作意识,培养在项目开发中相互协作的能力;3. 强化学生的程序逻辑思维,提高分析问题和解决问题的能力;4. 培养学生严谨的科学态度和良好的编程习惯。
本课程设计针对高年级学生,他们在前期课程中已具备Java语言基础,能够适应本课程的知识深度。
课程性质为实践性、综合性课程,要求学生将理论知识与实际操作相结合,通过完成时钟小程序的设计与实现,达到巩固知识、提升技能、培养情感态度价值观的目标。
通过具体学习成果的分解,教师可进行有针对性的教学设计和评估,确保课程目标的实现。
二、教学内容1. Java基本语法复习:变量声明与使用、数据类型、运算符、控制流程(条件语句、循环语句);2. 线程概念与使用:线程的创建、启动、同步,以及线程的生命周期;- 教材章节:第8章“多线程编程”;3. Java时间处理API介绍:java.util.Calendar类的使用,java.time包中LocalTime、LocalDate、LocalDateTime类的使用;- 教材章节:第11章“日期和时间处理”;4. 界面设计基础:Swing图形用户界面设计,布局管理器介绍及应用;- 教材章节:第14章“Swing用户界面设计”;5. 时钟小程序实现:设计并实现一个简单时钟界面,完成计时功能;- 结合教材实例,进行拓展教学;6. 程序调试与优化:使用调试工具进行程序错误查找,优化程序性能;- 教材章节:第16章“程序调试与优化”;7. 项目实践:小组合作,完成一个具有附加功能(如闹钟、计时器等)的时钟小程序开发。
java课程设计闹钟
java 课程设计闹钟一、教学目标本章节的教学目标为:知识目标:使学生掌握Java编程语言的基本语法和结构;让学生了解并掌握面向对象编程的基本概念和方法。
技能目标:培养学生运用Java语言进行程序设计的能力;培养学生运用面向对象的思想解决实际问题的能力。
情感态度价值观目标:培养学生对计算机科学的兴趣和热情;培养学生勇于探索、积极思考的科学精神。
二、教学内容本章节的教学内容为:1.Java编程语言的基本语法和结构,包括数据类型、运算符、控制结构等;2.面向对象编程的基本概念,包括类、对象、继承、多态等;3.Java编程语言的应用实例,包括计算器程序设计、闹钟程序设计等。
三、教学方法本章节的教学方法为:1.讲授法:通过讲解Java编程语言的基本语法和结构,让学生掌握编程的基本知识;2.案例分析法:通过分析具体的Java编程实例,让学生了解编程语言的应用;3.实验法:让学生动手编写Java程序,培养学生的编程能力和实践能力。
四、教学资源本章节的教学资源为:1.教材:《Java编程语言》;2.参考书:《Java核心技术》;3.多媒体资料:Java编程语言的教学视频;4.实验设备:计算机。
五、教学评估本章节的教学评估方式为:1.平时表现:通过课堂参与、提问、讨论等方式评估学生的学习态度和积极性;2.作业:通过学生提交的作业评估学生的编程能力和理解程度;3.考试:通过期末考试评估学生对Java编程语言的掌握程度。
评估方式应客观、公正,能够全面反映学生的学习成果。
六、教学安排本章节的教学安排为:1.教学进度:按照教材的章节顺序进行教学,确保学生在每个阶段都能够掌握相应的知识点;2.教学时间:安排每周固定的课时进行教学,保证学生有足够的时间学习和发展;3.教学地点:选择适合编程实践的实验室或者教室,提供给学生良好的学习环境。
教学安排应合理、紧凑,确保在有限的时间内完成教学任务,同时考虑学生的实际情况和需要。
七、差异化教学本章节差异化教学的内容为:1.根据学生的学习风格,提供不同的教学方式,如视觉教学、动手实践等;2.根据学生的兴趣,提供不同的编程项目,如游戏开发、设计等;3.根据学生的能力水平,提供不同难度的编程任务,让学生能够挑战自我,不断提高。
Java 桌面小时钟
Java 桌面小时钟一:简介:Java桌面小时钟制作过程:从网上收集可用的表盘、时针、分针、秒针图片,用Photoshop CS5进行修剪,在eclipse上利用Java绘图技术将图片加载在一个JPanel上,其中时针分针秒针按获取到的日期和计算公式进行旋转。
JPanel放在JFrame上,并将窗口设置为不规则形状。
后期为时钟添加事件响应,双击时关闭,鼠标位于窗口上时鼠标形状变为手型,窗口可拖拽。
鼠标悬停在时钟上时,可提示当前的年月日等信息。
程序运行结果如下:难点:本程序主要是控制时针分针秒针图片的旋转,从而实现时钟走动的效果。
但是在控制图片旋转的过程中遇到一个难题。
旋转后的图片会有锯齿现象,这回影响到程序的界面外观,解决办法是利用Java2D类的渲染参数,把渲染级别提高。
关键代码如下:// 获取绘图上下文的副本Graphics2D g1 = (Graphics2D) g.create();// 设置绘图上下文以质量为主,绘制图片,这样可以避免图片旋转时的锯齿g1.setRenderingHint(RenderingHints.KEY_RENDERING,RenderingHint s.VALUE_RENDER_QUALITY);二:类详解:MainFrame类本程序主类名称是MainFrame,它继承Jframe类成为一个窗体类。
在该类的构造方法中对窗体进行了初始化,为窗体控件进行了布局,并添加了必要的事件监听器。
关键代码如下:public MainFrame() {super();setAlwaysOnTop(true);setResizable(false);// 禁止调整窗体大小setUndecorated(true);//不装饰setShape(new Ellipse2D.Double(0, 0, 226, 224));//设置为圆形窗口setBounds(100, 100, 226, 224);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置鼠标为手型setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));// 创建自定义面板对象final ImagePanel imagePanel = new ImagePanel();// 添加面板对象到窗体getContentPane().add(imagePanel, BorderLayout.CENTER);// 为鼠标面板添加鼠标事件监听器imagePanel.addMouseListener(new MouseAdapter() {Public void mousePressed(final MouseEvent e) {fp = e.getPoint();}public void mouseClicked(MouseEvent e) {if (e.getClickCount() == 2) {System.exit(0);}}});// 为时钟面板的鼠标拖动事件中移动窗体imagePanel.addMouseMotionListener(new MouseMotionAdapter() { public void mouseDragged(final MouseEvent e) {JFrame frame = (JFrame) getRootPane().getParent();Point point = e.getLocationOnScreen();frame.setLocation(point.x - fp.x, point.y - fp.y);}});Thread imageThread = new Thread(imagePanel);imageThread.start();// 启动线程}ImagePanel类继承JPanel类编写一个自定义的面板控件,该控件类的名称为ImagePanel,作为本程序的背景面板,支持背景图片及时针、分针、秒针的旋转,图片的旋转是通过线程实现的,并且线程要控制旋转速度与时间。
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实现一个小时钟的程序专业班级: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闹钟程序
/** To change this template, choose Tools | Templates* and open the template in the editor.*/package javacourse;import java.applet.Applet;import java.applet.AudioClip;import java.awt.*;import java.io.IOException;import java.util.logging.Level;import java.util.logging.Logger;import javax.swing.*;import java.awt.event.*;import java.io.File;import .URI;import .URL;import java.util.Calendar;import java.util.Date;public class JavaCourse {public static void main(String[] args) {new NaoZhong("迷你小闹钟");}}class NaoZhong extends JFrame implements ActionListener{JLabel labelHead,labelDate,labelTime;JPanel panelCenter,panelSouth,panelEast;PanelPaint panelCenterGraphics= new PanelPaint();;//创建用于作画的画面Timer time;JButton buttonSet,buttonStop;Calendar calendar;String hour,minute,second, year,month,day;static String hour2="00",minute2="00",second2="00";//用于设置闹钟的时候与当前时间进行比较File musicFile;URI uri;URL url;JRadioButton jrb1,jrb2;StringdrawNaoZhong="NaoZhong1.jpg",musicNaoZhong="qichuang1.wav";//用于设置闹铃和钟表的背景AudioClip clip;//这个是用来播放音频的NaoZhong(String s){//为闹钟设置了标题this.setTitle(s);labelHead =new JLabel("迷你小闹钟");labelHead.setHorizontalAlignment(JLabel.CENTER);labelHead.setFont(new Font("宋体",Font.BOLD,40));//为闹钟设置日期LabelDatelabelTime = new JLabel();labelDate = new JLabel();calendar = Calendar.getInstance();year = Integer.toString(calendar.get(Calendar.YEAR)) ;month = Integer.toString(calendar.get(Calendar.MONTH)+1);day= Integer.toString(calendar.get(Calendar.DATE));hour = Integer.toString(calendar.get(Calendar.HOUR_OF_DAY));minute = Integer.toString(calendar.get(Calendar.MINUTE));second = Integer.toString(calendar.get(Calendar.SECOND));labelDate.setHorizontalAlignment(JLabel.CENTER);labelDate = new JLabel(year+" 年"+month+" 月"+day+" 号");//为闹钟设置当前时间LabelTime,要进行判断否则时间的秒会出现个位数labelTime.setHorizontalAlignment(JLabel.CENTER);if(Integer.parseInt(second)<10){second = "0"+second;}if(Integer.parseInt(minute)<10){minute="0"+minute;}if(Integer.parseInt(hour)<10){hour="0"+hour;}labelTime = new JLabel(hour+":"+minute+":"+second);//组织中间的一个panelCenterJPanel jp = new JPanel();//用于装labelTime,和labelDatelabelDate.setBounds(10, 10, 200, 200);jp.add(labelDate);jp.add(labelTime);panelCenter = new JPanel();panelCenter.setLayout(new BorderLayout());panelCenter.add(jp,BorderLayout.NORTH);//在这里加入画画的图片panelCenter.add(panelCenterGraphics,BorderLayout.CENTER);//组织最后一个panelSouth组件panelSouth =new JPanel();buttonSet = new JButton("设置闹钟");buttonSet.addActionListener(new ButtonListener());buttonStop = new JButton("停止闹钟");buttonStop.addActionListener(new ButtonStopListener());panelSouth.add(buttonSet);panelSouth.add(buttonStop);//设置一些框架的基本情况this.setBounds(200, 200, 500, 500);this.add(labelHead,BorderLayout.NORTH);this.add(panelCenter,BorderLayout.CENTER);this.add(panelSouth,BorderLayout.SOUTH);this.setVisible(true);this.validate();this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置每隔1秒钟刷新一次Timetime = new Timer(1000,this);time.start();//绘选择闹钟背景jrb1 = new JRadioButton("图片1");jrb2 = new JRadioButton("图片2");ButtonGroup bg = new ButtonGroup();bg.add(jrb1);bg.add(jrb2);jrb1.addItemListener(new PhotoListener());jrb2.addItemListener(new PhotoListener());panelEast = new JPanel(new GridLayout(3,1));panelEast.add(jrb1);panelEast.add(jrb2);this.add(panelEast,BorderLayout.EAST);}public void actionPerformed(ActionEvent e) {//把时间重新设计一次calendar = Calendar.getInstance();year = Integer.toString(calendar.get(Calendar.YEAR)) ;month = Integer.toString(calendar.get(Calendar.MONTH)+1);day= Integer.toString(calendar.get(Calendar.DATE));hour = Integer.toString(calendar.get(Calendar.HOUR_OF_DAY));minute = Integer.toString(calendar.get(Calendar.MINUTE));second = Integer.toString(calendar.get(Calendar.SECOND));labelDate.setHorizontalAlignment(JLabel.CENTER);labelDate.setText(year+" 年"+month+" 月"+day+" 号");if(Integer.parseInt(second)<10){second = "0"+second;}if(Integer.parseInt(minute)<10){minute="0"+minute;}if(Integer.parseInt(hour)<10){hour="0"+hour;}labelTime.setText(hour+":"+minute+":"+second);//这里不能再新建一个对象了,如果和之前的代码一样时间则框架中的时间就是不变了//设置当当前时间与闹钟的时间相同时我们开启铃声.if(hour.equals(hour2)&&minute.equals(minute2)&&second.equals(second2)){musicFile = new File(musicNaoZhong);uri = musicFile.toURI();try{url = uri.toURL();}catch(Exception exp){System.out.println("wrong");}clip = Applet.newAudioClip(url);clip.play();}panelCenterGraphics.repaint();}//重新定义panel中的paint方法class PhotoListener implements ItemListener{public void itemStateChanged(ItemEvent e) {if(e.getSource() == jrb1){drawNaoZhong = "NaoZhong1.jpg";}else{drawNaoZhong = "NaoZhong2.jpg";}}}class PanelPaint extends JPanel{public void paint(Graphics g){try {g.drawImage(javax.imageio.ImageIO.read(newFile(drawNaoZhong)),100,10,this);} catch (IOException ex) {Logger.getLogger(NaoZhong.class.getName()).log(Level.SEVERE, null, ex);}int xh,yh,xm,ym,xs,ys;int xcenter,ycenter;xcenter=248;ycenter=161;xs=(int)(Math.cos((Integer.parseInt(second))*3.14f/30-3.14f/2)*80+xcenter);ys=(int)(Math.sin((Integer.parseInt(second))*3.14f/30-3.14f/2)*80+ycenter); //这个就是起点xm=(int)(Math.cos(Integer.parseInt(minute)*3.14f/30-3.14f/2)*60+xcenter);ym=(int)(Math.sin(Integer.parseInt(minute)*3.14f/30-3.14f/2)*60+ycenter);xh=(int)(Math.cos((Integer.parseInt(hour)*30+Integer.parseInt(hour)/2)*3.14f/180-3.1 4f/2)*30+xcenter);yh=(int)(Math.sin((Integer.parseInt(hour)*30+Integer.parseInt(hour)/2)*3.14f/180-3.1 4f/2)*30+ycenter);g.setColor(Color.orange);g.drawLine(xcenter,ycenter-1,xm,ym);g.drawLine(xcenter-1,ycenter,xm,ym);g.setColor(Color.green);g.drawLine(xcenter,ycenter,xs,ys);g.setColor(Color.blue);g.drawLine(xcenter,ycenter-1,xh,yh);g.drawLine(xcenter-1,ycenter,xh,yh);}}/* class TimeListener implements ActionListener{//用来定期更新数字时钟的值}*/class ButtonListener implements ActionListener{//用来设置闹钟的闹铃时间public void actionPerformed(ActionEvent e) {new SetNaoZhong();}}class SetNaoZhong extends JDialog implements ActionListener{JTextField txtHour,txtMinute,txtSecond;JLabel labelHour,labelMinute,labelSecond;JPanel panelNorth2,panelCenter2,panelSouth2;JButton buttonYes,buttonNo;JComboBox list;SetNaoZhong(){//配置一下设置对话框的基本信息this.setTitle("闹钟设置");this.setBounds(300, 300, 300, 200);this.setVisible(true);this.setLayout(new BorderLayout());//配置panelNorth用于设置时间的部分panelNorth2 = new JPanel();txtHour = new JTextField("00",5);txtMinute = new JTextField("00",5);txtSecond = new JTextField("00",5);labelHour = new JLabel("时");labelMinute = new JLabel("分");labelSecond = new JLabel("秒");panelNorth2.add(labelHour);panelNorth2.add(txtHour);panelNorth2.add(labelMinute);panelNorth2.add(txtMinute);panelNorth2.add(labelSecond);panelNorth2.add(txtSecond);JPanel panelNorth3 = new JPanel();panelNorth3.setLayout(new BorderLayout());panelNorth3.add(panelNorth2,BorderLayout.NORTH);this.add(panelNorth3,BorderLayout.NORTH);//设置按钮组panelCenterpanelCenter2 = new JPanel();buttonYes = new JButton("yes");buttonYes.addActionListener(this);buttonNo = new JButton("no");buttonNo.addActionListener(this);panelCenter2.add(buttonYes);panelCenter2.add(buttonNo);this.add(panelCenter2,BorderLayout.CENTER);//设置选择歌曲的选项list = new JComboBox();list.addItem("qichuang1.wav");list.addItem("qichuang2.wav");list.addItem("qichuang3.wav");panelNorth3.add(list,BorderLayout.SOUTH);}public void actionPerformed(ActionEvent e) {if(e.getSource()==buttonYes){hour2 = txtHour.getText();minute2 = txtMinute.getText();second2 = txtSecond.getText();if(Integer.parseInt(second2)<10&&second2.charAt(0)!='0'){second2 = "0"+second2;}if(Integer.parseInt(minute2)<10&&minute2.charAt(0)!= '0'){minute2="0"+minute2;}if(Integer.parseInt(hour2)<10&&hour2.charAt(0)!='0'){hour2="0"+hour2;}this.setVisible(false);}else{this.setVisible(false);}musicNaoZhong = (String)list.getSelectedItem();}}public class ButtonStopListener implements ActionListener{public void actionPerformed(ActionEvent e) {clip.stop();}}}。
Java时钟小程序课课程设计
Java时钟小程序课课程设计一、教学目标本节课的学习目标包括以下三个方面:1.知识目标:使学生掌握Java编程语言的基本语法和操作,了解面向对象编程的基本概念,掌握使用Java编写简单的时钟小程序的方法。
2.技能目标:培养学生运用Java编程语言解决实际问题的能力,提高学生的编程思维和动手实践能力,使学生能够独立编写并调试简单的Java程序。
3.情感态度价值观目标:培养学生对计算机编程的兴趣和热情,增强学生自信心,培养学生的团队协作精神和自主学习能力。
通过对课程性质、学生特点和教学要求的分析,明确课程目标,将目标分解为具体的学习成果,以便后续的教学设计和评估。
二、教学内容本节课的教学内容主要包括以下几个部分:1.Java编程语言基本语法和操作:数据类型、变量、运算符、控制结构等。
2.面向对象编程概念:类、对象、封装、继承、多态等。
3.Java时钟小程序的编写:使用Java Swing或JavaFX库实现一个简单的图形界面时钟,通过编程实现时钟的运行和显示。
教学内容的选择和要确保科学性和系统性,制定详细的教学大纲,明确教学内容的安排和进度,指出教材的章节和列举内容。
三、教学方法为了激发学生的学习兴趣和主动性,本节课将采用以下几种教学方法:1.讲授法:讲解Java编程语言的基本语法和操作,面向对象编程概念等理论知识。
2.案例分析法:分析典型的Java程序案例,使学生更好地理解编程原理和方法。
3.实验法:引导学生动手实践,编写并调试Java时钟小程序,提高学生的编程能力。
通过多样化的教学方法,使学生在理论知识和实践操作中掌握Java编程技能。
四、教学资源本节课的教学资源包括以下几个方面:1.教材:选用权威、实用的Java编程教材,为学生提供系统的学习资料。
2.参考书:提供相关的Java编程参考书籍,丰富学生的知识储备。
3.多媒体资料:制作精美的PPT课件,直观地展示教学内容。
4.实验设备:为学生提供充足的计算机设备,确保每个学生都能动手实践。
Java简单的数字时钟
label = new JLabel("");
label.setFont(new Font("微软雅黑", Font.BOLD, 20));
label.setHorizontalAlignment(SwingConstants.CENTER);
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
e.printStackTrace();
}
}
}
}
protected void do_this_windowActivated(WindowEvent arg0) {
int hour = calendar.get(Calendar.HOUR_OF_DAY); // 获得当前小时
inTE); // 获得当前分钟
int second = calendar.get(Calendar.SECOND); // 获得当前秒
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
return format(hour) + ":" + format(minute) + ":" + format(second);// 返回格式化的字符串
JavaFX实现简易时钟效果(一)
JavaFX实现简易时钟效果(⼀)本⽂实例为⼤家分享了JavaFX实现简易时钟效果的具体代码,供⼤家参考,具体内容如下效果图⽤当前时间创建时钟,绘制表盘。
钟表是静⽌的。
让指针动起来,请参照:主函数⽂件 ShowClock:package primier;import javafx.application.Application;import javafx.geometry.Insets;import javafx.geometry.Pos;import javafx.scene.Scene;import javafx.stage.Stage;import javafx.scene.paint.Color;import yout.*;import javafx.scene.control.*;import javafx.scene.image.Image;import javafx.scene.image.ImageView;import javafx.scene.shape.Line;public class ShowClock extends Application {@Override //Override the start method in the Application classpublic void start(Stage primaryStage) {// 创建时钟⾯板ClockPane clock = new ClockPane();// 当前时间整理为字符串String timeString = clock.getHour() + ":" + clock.getMinute()+ ":" + clock.getSecond();Label lbCurrentTime = new Label(timeString);BorderPane pane = new BorderPane();pane.setCenter(clock);pane.setBottom(lbCurrentTime);// 将时钟字符串设为靠上居中BorderPane.setAlignment(lbCurrentTime, Pos.TOP_CENTER);Scene scene = new Scene(pane, 250,250);primaryStage.setTitle("Display Clock");primaryStage.setScene(scene);primaryStage.show();}public static void main (String[] args) {unch(args);}}ClockPane 类package primier;import java.util.Calendar;import java.util.GregorianCalendar;import yout.Pane;import javafx.scene.paint.Color;import javafx.scene.shape.Circle;import javafx.scene.shape.Line;import javafx.scene.text.Text;public class ClockPane extends Pane {private int hour;private int minute;private int second;// 时钟⾯板的宽度和⾼度private double w = 250, h = 250;/** ⽤当前时间创建时钟 */public ClockPane() {setCurrentTime();}/** Return hour */public int getHour() { return hour; }/** Return minute */public int getMinute() { return minute; }/** Return second */public int getSecond() { return second; }/** Set the current time for the clock */public void setCurrentTime() {// ⽤当前时间创建Calendar类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.4; // 时钟半径// 时钟中⼼x, y坐标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 secondX = centerX + sLength * Math.sin(second * (2 * Math.PI / 60)); double secondY = centerY - sLength * Math.cos(second * (2 * Math.PI / 60)); Line sLine = new Line(centerX, centerY, secondX, secondY);sLine.setStroke(Color.GRAY);// 分针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.0) * (2 * Math.PI / 12));Line hLine = new Line(centerX, centerY, hourX, hourY);sLine.setStroke(Color.GREEN);// 将之前的结点清空,绘制新创建的结点getChildren().clear();getChildren().addAll(circle, t1, t2, t3, t4, sLine, mLine, hLine);}}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
Java数字时钟(简单的桌面应用)
import java.util.*;/*****该程序是一个简单的数字时钟,每变化一秒,颜色随机变色,可以系统托盘,最大的特点是可以和桌面形成一体,也就是容纳这个数字时钟的窗体可以看成是透明的***********/import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.awt.image.BufferedImage;public class app509 extends JFrame{static int i=-1,geli=-1;/*这一部分是系统托盘图标的文件路径,可以自己设置,只要路径正确即可,可以是gif,jpg,png格式*/static Image image=Toolkit.getDefaultToolkit().getImage("D:1\\3.png");static SystemTray systemTray=SystemTray.getSystemTray();static PopupMenu pop01=new PopupMenu();static MenuItem MI01=new MenuItem("打开主程序");static MenuItem MI02=new MenuItem("退出程序");static MenuItem MI03=new MenuItem("隐藏");static TrayIcon trayIcon=new TrayIcon(image,"这是程序图标",pop01);static JLabel beijingtu=new JLabel();static JLabel xingqi=new JLabel(" ",JLabel.CENTER);static JLabel jlabel02=new JLabel("年",JLabel.CENTER);static JLabel jlabel03=new JLabel("月",JLabel.CENTER);static JLabel jlabel04=new JLabel("日",JLabel.CENTER);static JLabel jlabel05=new JLabel("分",JLabel.CENTER);static JLabel jlabel10=new JLabel("时",JLabel.CENTER);static JLabel jlabel12=new JLabel("分",JLabel.CENTER);static JLabel jlabel13=new JLabel("秒",JLabel.CENTER);static JLabel jlabel06=new JLabel(" ",JLabel.CENTER);static JLabel jlabel07=new JLabel(" ",JLabel.CENTER);static JLabel jlabel08=new JLabel(" ",JLabel.CENTER);static JLabel jlabel09=new JLabel(" ",JLabel.CENTER);static JLabel jlabel11=new JLabel(" ",JLabel.CENTER);static JLabel jlabel=new JLabel(" ",JLabel.CENTER);static JLabel jbData[]={jlabel13,jlabel02,jlabel03,jlabel04,jlabel10,jlabel12};static JLabel jbData02[]={jlabel,jlabel07,jlabel08,jlabel09,jlabel11,jlabel06};static int mill=0;static int minute=0;static int hour=0;static int day=0;static int month=0;static int year=0;static int week;static int zuobiaoX,zuobiaoY;static JFrame JF01=new JFrame();static JDialog JF=new JDialog(JF01," ");static Robot robot;static BufferedImage image1;static Rectangle rec;static class mouseListener extends MouseAdapter{public void mouseClicked(MouseEvent a){if(a.getSource()==trayIcon){if(a.getClickCount()==2){i++;if(i%2==1){geli++;if(geli%2==1){image1=robot.createScreenCapture(rec);beijingtu.setIcon(new ImageIcon(image1));JF.setBounds(0,0,120,560);JF.setVisible(true);}}else{JF.setBounds(0,0,400,1);}}}}public void mouseEntered(MouseEvent a){if(a.getSource()==JF){image1=robot.createScreenCapture(rec);beijingtu.setIcon(new ImageIcon(image1));JF.setBounds(0,0,120,560);JF.setVisible(true);}}public void mouseExited(MouseEvent a){if(a.getSource()==JF){JF.setBounds(0,0,400,1);}}}public static void main(String args[]) throws Exception{trayIcon.addMouseListener(new mouseListener());rec=new Rectangle(0,0,(int)Toolkit.getDefaultToolkit().getScreenSize().getWidth(),(int)Toolkit.getDefaultToolkit().getScreenSize().getHeight());try{robot=new Robot(); }catch(Exception b){}image1=robot.createScreenCapture(rec);beijingtu.setIcon(new ImageIcon(image1));MI01.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent a){Image1=robot.createScreenCapture(rec);beijingtu.setIcon(new ImageIcon(image1));JF.setBounds(0,0,120,560);JF.setVisible(true);}});MI03.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent a){JF.setBounds(0,0,400,1);}});MI02.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent a){System.exit(0);}});try{pop01.add(MI01);pop01.add(MI03);pop01.add(MI02);systemTray.add(trayIcon);trayIcon.setImageAutoSize(true);trayIcon.addMouseListener(new mouseListener());}catch(Exception a){} JF.setResizable(false) ;JF.addMouseListener(new mouseListener());JF.setUndecorated(true);beijingtu.setBounds(0,0,(int)Toolkit.getDefaultToolkit().getScreenSize().getWidth(),(int)Toolkit.getDefaultToolkit().getScreenSize().getHeight());JF.setLayout(null);JF.setBounds(0,0,120,560);JF.setVisible(true);jlabel02.setBounds(91,94,24,25);jlabel06.setBounds(15,94,64,28);jlabel03.setBounds(91,175,24,25);jlabel07.setBounds(2,125,86,75);jlabel04.setBounds(91,261,24,25);jlabel08.setBounds(2,210,86,75);jlabel10.setBounds(91,346,24,25);jlabel09.setBounds(2,296,86,75);jlabel11.setBounds(2,382,86,75);jlabel12.setBounds(91,433,24,25);jlabel13.setBounds(91,520,24,25);jlabel.setBounds(2,468,86,75);xingqi.setBounds(2,30,118,62);JF.add(xingqi);xingqi.setHorizontalTextPosition(JLabel.CENTER);xingqi.setFont(new Font("微软雅黑",Font.BOLD,20));for(int i=0;i<jbData.length;i++){JF.add(jbData[i]);JF.add(jbData02[i]);}for(int i=0;i<jbData.length;i++){jbData[i].setFont(new Font("微软雅黑",Font.BOLD,15));jbData02[i].setFont(new Font("微软雅黑",Font.BOLD,30));}jlabel06.setFont(new Font("微软雅黑",Font.BOLD,15));for(int i=0;i<jbData.length;i++){jbData[i].setForeground(Color.blue);jbData02[i].setForeground(Color.red);}for(int i=0;i<jbData.length;i++){jbData[i].setHorizontalTextPosition(JLabel.CENTER);jbData02[i].setHorizontalTextPosition(JLabel.CENTER);}jlabel02.setHorizontalTextPosition(JLabel.RIGHT);JF.add(beijingtu);xiancheng xiancheng01=new xiancheng();xiancheng01.start();}}class xiancheng extends Thread{static GregorianCalendar date=new GregorianCalendar();app509 app=new app509();public void run(){for(int i=0;i<60;){try{sleep(1000);}catch(Exception a){}app.year=(date=new GregorianCalendar()).get(date.YEAR);app.jlabel06.setText(Integer.toString(app.year));app.month=((date=new GregorianCalendar()).get(date.MONTH)+1);app.jlabel07.setText(Integer.toString(app.month));app.day=(date=new GregorianCalendar()).get(date.DAY_OF_MONTH);app.jlabel08.setText(Integer.toString(app.day));app.week=(date=new GregorianCalendar()).get(date.DAY_OF_WEEK);app.hour=(date=new GregorianCalendar()).get(date.HOUR_OF_DAY);app.jlabel09.setText(Integer.toString(app.hour));app.minute=(date=new GregorianCalendar()).get(date.MINUTE);app.jlabel11.setText(Integer.toString(app.minute));l=(date=new GregorianCalendar()).get(date.SECOND);app.jlabel.setText(Integer.toString(l));if(app.jlabel.getText()!=" "){app.xingqi.setForeground(new Color((int)(255*Math.random()),(int)(255*Math.random()),(int)(255*Math.random())));for(int j=0;j<app.jbData.length;j++){app.jbData[j].setForeground(new Color((int)(255*Math.random()),(int)(255*Math.random()),(int)(255*Math.random())));app.jbData02[j].setForeground(new Color((int)(255*Math.random()),(int)(255*Math.random()),(int)(255*Math.random())));}} switch(app.week){case 1 : app.xingqi.setText("星期日");break;case 2 : app.xingqi.setText("星期一");break;case 3 : app.xingqi.setText("星期二");break;case 4 : app.xingqi.setText("星期三");break;case 5 : app.xingqi.setText("星期四");break;case 6 : app.xingqi.setText("星期五");break;case 7 : app.xingqi.setText("星期六");break;}System.gc();}}}/****复制以上代码进行编译即可*****/程序效果图:。
面向对象程序设计——闹钟
(2)各方法Clock() 能 执行main函数 Clock类的构造函数, 用于对时钟界面的初 始化
Run()
用于对时钟的动态显 示的执行,并判断是 否设定了闹钟时间, 若当前时间与设定的 时间相等则播放选定 的音乐
(3)主要模块描述算法
① 当前动态时间的显示的设计与实现。 功能:可以实时的更新显示系统完整的时间 算法:引入java.util.Date用while循环更新时间 代码如下: public void run() { while (true) { Date now = new Date();//设置一个新的当前时间对象。 dangqian.setText("当前时间: " + now.toString());//显示 当前的时间 … }
3、设计思想与步骤
(1)画出类的UML简图 Clock类: Clock类中的变量 ri, shi, fen, miao, dangqian, guanji: JLabel queding, dakai : JButton music, RI, SHI, FEN, MIAO : JTextField h = 0, f = 0, m = 0, r = 0 : int Fo, foo : boolean soumd1 : public AudioClip Clock类中的函数 public clock() public static void main(String agrs[]) public void run()
②音乐文件的选择。
功能:用打开按钮实现对本地音乐文件的选择 算法:引入java.io.File和.MalformedURLException 来实现对音乐本地音乐文件的选择。 代码如下: dakai.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { JFileChooser fileChooser = new JFileChooser(); // 实例化文件选择器 fileChooser .setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); // 设置文 件选择模式,此处为文件和目录均可 fileChooser.setCurrentDirectory(new File(".")); // 设置文件选择器当前目录 fileChooser .setFileFilter(new javax.swing.filechooser.FileFilter() { public boolean accept(File file) { // 可接受的文件类型 String name = file.getName().toLowerCase(); return name.endsWith(".wav") || name.endsWith(".au") || file.isDirectory(); } public String getDescription() { // 文件描述 return "音乐文件(*.wav,*.au)"; } });
Java实现的简单数字时钟功能示例
Java实现的简单数字时钟功能⽰例本⽂实例讲述了Java实现的简单数字时钟功能。
分享给⼤家供⼤家参考,具体如下:应⽤名称:Java数字时钟⽤到的知识:Java GUI编程,线程开发环境:win8+eclipse+jdk1.8功能说明:可以显⽰当前系统的年⽉⽇、星期以及准确时间,并实时更新显⽰。
效果图:源代码:import javax.swing.JFrame;import javax.swing.JPanel;import java.awt.BorderLayout;import javax.swing.JLabel;import java.awt.Font;import java.text.SimpleDateFormat;import java.util.Date;public class Time extends JFrame implements Runnable{/****/private static final long serialVersionUID = 1L;private JLabel date;private JLabel time;public Time() {//初始化图形界⾯this.setVisible(true);this.setTitle("数字时钟");this.setSize(282, 176);this.setLocation(200, 200);this.setResizable(true);JPanel panel = new JPanel();getContentPane().add(panel, BorderLayout.CENTER);panel.setLayout(null);//时间time = new JLabel();time.setBounds(31, 54, 196, 59);time.setFont(new Font("Arial", Font.PLAIN, 50));panel.add(time);//⽇期date = new JLabel();date.setFont(new Font("微软雅⿊", Font.PLAIN, 13));date.setBounds(47, 10, 180, 22);panel.add(date);}//⽤⼀个线程来更新时间public void run() {while(true){try{date.setText(new SimpleDateFormat("yyyy 年 MM ⽉ dd ⽇ EEEE").format(new Date()));time.setText(new SimpleDateFormat("HH:mm:ss").format(new Date()));}catch(Throwable t){t.printStackTrace();}}}public static void main(String[] args) {new Thread(new Time()).start();}}PS:这⾥再为⼤家推荐⼏款时间及⽇期相关⼯具供⼤家参考使⽤:更多关于java相关内容感兴趣的读者可查看本站专题:《》、《》、《》和《》希望本⽂所述对⼤家java程序设计有所帮助。
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语言,提高对图形界面及小程序的设计和编程能力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java应用简易闹钟设计一、项目概述应用Java程序设计语言,主要是使用Swing组件、事件处理器、线程控制等实现对简易闹钟的开发设计,设计过程中要求闹钟能够显示当前时间,并且能够设定闹钟的个性铃声,当设定了闹钟时间后,待到设置时间时能够自动播放音乐。
关键词:Java 面向对象闹钟铃声设置1.1 问题和要求如何应用Java语言实现对闹钟的简易设计,要求设计实现的闹钟能够显示当前的时间,能够设置个性闹铃,并且可以预先设定闹钟时间,待到设置时间时能够自动播放音乐。
二、设计与开发2.1 问题分析1)如何实现闹钟外观的简易设计;2)如何能够获取当前时间并显示出来;3)如何查阅文件夹选择音乐文件来实现个性闹铃的设置;4)如何实现闹钟时间的设定,使闹钟能够在指定时间闹铃。
2.2 程序设计1)运用Swing组件实现对闹钟的外观设计。
主要应用到标签(JLable)、文本域(JTextField)、按钮(JButton)等,采用网格式布局,由网格布局管理器(GridLayout)来实现。
2)创建线程来获取当前时间,主要通过Runnable接口,使用run()方法来实现当前时间的显示。
3)要使按“选择闹铃音乐”按钮时能够触发对音乐文件的选择,则对按钮添加监听器并采用实例化文件选择器。
4)为了能在输入定点时间后实现对闹钟时间的设定,则需要对“确定”按钮添加监听器。
2.3 代码实现import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.applet.Applet;import java.applet.AudioClip;import java.io.File;import .*;import java.text.SimpleDateFormat;import java.util.Date;public class AlarmClock extends JFrame implements Runnable { JLabel dangqian;JButton queding, xuanze;JTextField music,RI, SHI, FEN, MIAO;int h=0,f=0,m=0,r=0;boolean fo=false;public AudioClip soumd1;public AlarmClock() {Container c = getContentPane();c.setLayout(new GridLayout(3, 1));JPanel jp = new JPanel();dangqian = new JLabel();jp.add(dangqian);c.add(jp);JPanel jp1 = new JPanel();music = new JTextField(20);xuanze = new JButton("选择闹铃音乐");jp1.add(music);jp1.add(xuanze);c.add(jp1);RI = new JTextField(4);SHI = new JTextField(4);FEN = new JTextField(4);MIAO = new JTextField(4);JPanel jp2 = new JPanel();jp2.add(new JLabel("日"));jp2.add(RI);jp2.add(new JLabel("时"));jp2.add(SHI);jp2.add(new JLabel("分"));jp2.add(FEN);jp2.add(new JLabel("秒"));jp2.add(MIAO);queding = new JButton("确定");jp2.add(queding);c.add(jp2);setSize(420, 150);setVisible(true);xuanze.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { JFileChooser fileChooser = new JFileChooser();fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTOR IES);fileChooser.setCurrentDirectory(new File("."));if (fileChooser.showOpenDialog(AlarmClock.this) == JFileChooser.APPROVE_OPTION) {String fileName =fileChooser.getSelectedFile().getAbsolutePath();music.setText(fileName);}}});queding.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent event) {if(queding.getText().equals("确定")){try{r=Integer.parseInt(RI.getText());h=Integer.parseInt(SHI.getText());f=Integer.parseInt(FEN.getText());m=Integer.parseInt(MIAO.getText());if(1<=r&&r<=31&&0<=h&&h<=23&&0<=f&&f<=59&&0<=m&&m<=59){fo=true;}elseJOptionPane.showMessageDialog(null, "输入时间错误");}catch(Exception e){JOptionPane.showMessageDialog(null, "请输入正确的时间");}}else{fo=false;RI.setEditable(true);SHI.setEditable(true);FEN.setEditable(true);MIAO.setEditable(true);queding.setText("确定");soumd1.stop();}}});}public static void main(String agrs[]) {AlarmClock s = new AlarmClock();Thread t1 = new Thread(s);t1.start();s.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public void run() {while (true) {Date now = new Date();dangqian.setText("当前时间: " + now.toString());if(fo){RI.setEditable(false);SHI.setEditable(false);FEN.setEditable(false);MIAO.setEditable(false);queding.setText("关闭");SimpleDateFormat ri=new SimpleDateFormat("dd");SimpleDateFormat shi=new SimpleDateFormat("kk");SimpleDateFormat fen=new SimpleDateFormat("mm");SimpleDateFormat miao=new SimpleDateFormat("ss");int riqi=Integer.parseInt(ri.format(now));int shizhong=Integer.parseInt(shi.format(now));int fenzhong=Integer.parseInt(fen.format(now));int miaozhong=Integer.parseInt(miao.format(now));if(riqi==r&&shizhong==h&&fenzhong==f&&miaozhong==m){try {soumd1=Applet.newAudioClip(newFile(music.getText()).toURL());soumd1.loop();fo=false;} catch (MalformedURLException e) {e.printStackTrace();}}}try {Thread.sleep(1000);} catch (InterruptedException ie) {}}}}三、作品展示3.1 图片展示3.2 总结通过对闹钟的设计,进一步了解了Java语言的编写方法,包括对象类的封装、数据类型的引用、图形化用户界面的实现等等。
在设计实现过程中,主要应用到了Swing组件,通过多次应用,清楚地知道了各组件的功能,并能合理地布局,有效地实现图形化用户界面。
实际设计分析过程中难免遇到不少问题,但通过对问题的分析、思考和解决,反而让我加深了对知识点的印象,获得了更多的收益。
虽然只是一个小小时钟的设计,却也没那么简单,每个功能的实现都有一定的技术。
四、参考文献[1] 郎波. Java语言程序设计(第二版). 清华大学出版社, 2010.。