Java应用 简易闹钟设计
- 格式:doc
- 大小:87.00 KB
- 文档页数:8
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实现一个小时钟的程序专业班级: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。
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语言实现一个简单的闹钟程序,具备分析和解决问题的能力。
情感态度价值观目标:培养学生对编程的兴趣,增强其自主学习和创新意识。
二、教学内容本章节的教学内容主要包括以下几个部分:1.Java基础语法:变量、数据类型、运算符、控制结构等。
2.面向对象编程:类、对象、封装、继承、多态等。
3.事件处理机制:事件监听器、事件处理函数等。
4.闹钟程序实现:分析需求、设计界面、编写代码、调试运行等。
三、教学方法本章节的教学方法采用讲授法、案例分析法和实验法相结合的方式。
1.讲授法:用于讲解Java基础语法和面向对象编程知识。
2.案例分析法:通过分析实际案例,让学生理解事件处理机制和闹钟程序的实现。
3.实验法:让学生动手编写和运行代码,培养实际操作能力。
四、教学资源本章节的教学资源包括教材、多媒体资料和实验设备。
1.教材:用于引导学生学习Java基础语法和面向对象编程知识。
2.多媒体资料:用于辅助讲解和展示案例分析,增强学生的学习兴趣。
3.实验设备:为学生提供实践操作的平台,培养实际编程能力。
五、教学评估本章节的评估方式包括平时表现、作业和考试三个部分,以保证评估的客观性和公正性。
1.平时表现:通过课堂参与、提问、讨论等方式评估学生的学习态度和积极性。
2.作业:布置与章节内容相关的编程作业,评估学生的理解和应用能力。
3.考试:期末进行闭卷考试,全面测试学生对Java基础语法、面向对象编程和事件处理机制的掌握程度。
六、教学安排本章节的教学安排如下:1.教学进度:按照教材的章节顺序进行教学,确保学生系统地掌握知识。
2.教学时间:共计30课时,每课时45分钟,包括课堂讲解、案例分析和实验操作。
3.教学地点:教室和计算机实验室,以便学生进行实际操作。
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语言进行程序设计的能力;培养学生运用面向对象的思想解决实际问题的能力。
情感态度价值观目标:培养学生对计算机科学的兴趣和热情;培养学生勇于探索、积极思考的科学精神。
二、教学内容本章节的教学内容为: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桌面小时钟制作过程:从网上收集可用的表盘、时针、分针、秒针图片,用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,作为本程序的背景面板,支持背景图片及时针、分针、秒针的旋转,图片的旋转是通过线程实现的,并且线程要控制旋转速度与时间。
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);}}。
课程设计(综合实验)报告( 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程序设计语言,主要是使用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.。