JAVA实验三时钟类.doc_第1页
JAVA实验三时钟类.doc_第2页
JAVA实验三时钟类.doc_第3页
JAVA实验三时钟类.doc_第4页
JAVA实验三时钟类.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

安徽机电职业技术学院实验报告课程名称Java语言程序设计实验名称实验三:时钟与类班级姓名学号小组成员一、实验目的1、掌握的类的定义和应用2、掌握方法的定义,对象的创建等操作二、实验内容图中显示一个不完整的时钟程序,可是显示当前系统时间,也可以通过设置另外设置时间(时,分,秒),让时钟按照设置的时间走时。程序已经时间了初始获取当前时间并且显示秒针,要求同学们完善时钟,具体要求如下:1、 完成时针和分针的设计2、 可以自己设置时间,并显示(完成快捷菜单第二项功能)3、 可以恢复为系统时间 (完成快捷菜单第三项功能)提示与要求:提示1:时钟已经提供了两个源代码文件,一个为FrTest文件,设置显示窗口。该类继承了JFrame窗口类,并实现了MouseListener,ActionListener两个接口:MouseListener让窗口可以通过右键点击显示菜单,该接口有mouseClicked(MouseEvent e) ; mousePressed(MouseEvent e) ; mouseExited(MouseEvent e) ; mouseEntered(MouseEvent e) ; mouseReleased(MouseEvent e)五个抽象方法;ActionListener接口实现当用户点击菜单选项时的动作,该接口有actionPerformed(ActionEvent e)抽象方法,具体功能可参考源程序FrTest包含方法如下:构造方法:提供窗口的基本信息的显示,以及事件监听器的设置。6个接口自带的抽放方法的覆盖。paint方法:实现窗口的绘图的方法,该方法在显示窗口时自动加载。传递的参数与Applet类中paint方法相似,皆为Griphics对象,可以通过调用repaint()方法,使paint方法重新调用。提示2:时钟已经提供了两个源代码文件,另一个为Clock类,该类为不完成品,需要同学们根据自己的需要改动并补充。 类中除了提供了Hour,Minute,second三个变量记录小时,分钟,秒钟。提供了一个nouSec变量,专门记录上一次记录的秒针时间,在每一次run调用时,通过nouSec和获取当前秒钟的时间进行对比,判断时间是否变化,并更改三个变量。(备注:由于考虑系统时钟可能被用户修改了时间,所以不能直接让Hour,Minute,second三个变量获取当前时间)要求1:认真理解程序,并在程序中提示添加的部分(用/* - */备注的部分为需要用户必须添加的部分)添加程序,使程序完整,能够实现基本的时间显示,和修改功能。要求2:在修改时间的时候,需要考虑对Clock程序如何设置修改才能让时间修改。要求3:要求同学们在设置时间功能的时候,考虑如何输入时间值。推荐1:用简单的输入输出语句实现,但是需要判断输入的安全性(值的范围限制)推荐2:可以用JOptionPane的showInputDialog方法在对话框中输入。推荐3,:当选择设置时间时,定义一个新窗口并弹出,新窗口通过组建实现用户会时间的设置,但是需要同学们考虑如何将新窗口的时间值返回给调用类。推荐4:同学们可以自行查询JDialog类(对话框)窗口类的使用方法要求4:在其他功能完善后,建议同学们为程序添加一个闹钟功能。三、实验步骤3.1 源代码import java.awt.*;import javax.swing.*;import java.awt.event.*;public class FrTest extends JFrame implements MouseListener, ActionListener int h3 = 0, m3 = 0, s3 = 0, t = 3; JPopupMenu pop = new JPopupMenu(); JMenuItem item1 = new JMenuItem(设置时间); JMenuItem item2 = new JMenuItem(设置闹钟); JMenuItem item3 = new JMenuItem(恢复系统时间); JMenuItem item4 = new JMenuItem(退出); Clock clock = new Clock(); int hour = clock.getHour(); int second = clock.getSecond(); int minute = clock.getMinute(); public FrTest() super(画时钟小测试); setLayout(new FlowLayout(); setBounds(200, 100, 500, 500); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); add(pop); pop.add(item1); pop.add(item2); pop.add(item3); pop.add(item4); addMouseListener(this); item1.addActionListener(this); item2.addActionListener(this); item3.addActionListener(this); item4.addActionListener(this); public void paint(Graphics g) double x1, x2, y1, y2, x3, y3, x4, y4; int ax = new int4; int ay = new int4; g.setColor(new Color(22, 22, 122); g.fillOval(100, 100, 250, 250); g.setColor(new Color(255, 255, 255); g.fillOval(112, 112, 226, 226); g.setColor(new Color(224, 224, 242); g.fillOval(115, 115, 220, 220); /以下语句画表盘上的刻度 g.setColor(new Color(190, 30, 120); g.setFont(new Font(Georgia, Font.BOLD, 24); g.drawString(9, 120, 225); g.drawString(3, 310, 225); g.drawString(12, 215, 135); g.drawString(6, 220, 325); g.fillOval(140, 170, 8, 8); g.fillOval(170, 140, 8, 8); g.fillOval(270, 140, 8, 8); g.fillOval(300, 170, 8, 8); g.fillOval(140, 270, 8, 8); g.fillOval(170, 300, 8, 8); g.fillOval(270, 300, 8, 8); g.fillOval(300, 270, 8, 8); x1 = Math.sin(Math.PI * hour / 6) * 70 + 225.0;/计算指针的四个点 y1 = 225.0 - Math.cos(Math.PI * hour / 6) * 70; x3 = 225.0 - Math.sin(Math.PI * hour / 6) * 15; y3 = 225.0 + Math.cos(Math.PI * hour / 6) * 15; x2 = Math.sin(Math.PI * (hour - 0.2) / 6) * 50 + 225.0; y2 = 225.0 - Math.cos(Math.PI * (hour - 0.2) / 6) * 50; x4 = Math.sin(Math.PI * (hour + 0.2) / 6) * 50 + 225.0; y4 = 225.0 - Math.cos(Math.PI * (hour + 0.2) / 6) * 50; ax0 = (int) x1; ax1 = (int) x2; ax2 = (int) x3; ax3 = (int) x4;/将计算的地址值转换为多边形方法绘图的参数类型 ay0 = (int) y1; ay1 = (int) y2; ay2 = (int) y3; ay3 = (int) y4; g.setColor(Color.gray); g.fillPolygon(ax, ay, 4);/画多边形语句,前两个参数要求int型数组 x1 = Math.sin(Math.PI * minute / 30) * 80 + 225.0; y1 = 225.0 - Math.cos(Math.PI * minute / 30) * 80; x3 = 225.0 - Math.sin(Math.PI * minute / 30) * 15; y3 = 225.0 + Math.cos(Math.PI * minute / 30) * 15; x2 = Math.sin(Math.PI * (minute - 0.5) / 30) * 55 + 225.0; y2 = 225.0 - Math.cos(Math.PI * (minute - 0.5) / 30) * 55; x4 = Math.sin(Math.PI * (minute + 0.5) / 30) * 55 + 225.0; y4 = 225.0 - Math.cos(Math.PI * (minute + 0.5) / 30) * 55; ax0 = (int) x1; ax1 = (int) x2; ax2 = (int) x3; ax3 = (int) x4; ay0 = (int) y1; ay1 = (int) y2; ay2 = (int) y3; ay3 = (int) y4; g.setColor(Color.gray); g.fillPolygon(ax, ay, 4); /以下是画秒针 x1 = Math.sin(Math.PI * second / 30) * 90 + 225.0; y1 = 225.0 - Math.cos(Math.PI * second / 30) * 90; x3 = 225.0 - Math.sin(Math.PI * second / 30) * 15; y3 = 225.0 + Math.cos(Math.PI * second / 30) * 15; x2 = Math.sin(Math.PI * (second - 0.5) / 30) * 60 + 225.0; y2 = 225.0 - Math.cos(Math.PI * (second - 0.5) / 30) * 60; x4 = Math.sin(Math.PI * (second + 0.5) / 30) * 60 + 225.0; y4 = 225.0 - Math.cos(Math.PI * (second + 0.5) / 30) * 60; ax0 = (int) x1; ax1 = (int) x2; ax2 = (int) x3; ax3 = (int) x4; ay0 = (int) y1; ay1 = (int) y2; ay2 = (int) y3; ay3 = (int) y4; g.setColor(Color.BLUE); g.fillPolygon(ax, ay, 4); if(hour=h3 & minute=m3 & second=s3)JOptionPane.showMessageDialog(null,您设置的闹钟时间到了,哈哈哈!); public void actionPerformed(ActionEvent e) if (e.getSource() = item4) this.dispose(); if (e.getSource() = item1) boolean TF = true; int h2 = 0, m2 = 0, s2 = 0, t = 3; do String h = JOptionPane.showInputDialog(null, 请输入您要设置的小时(023):); String m = JOptionPane.showInputDialog(null, 请输入您要设置的分钟(059):); String s = JOptionPane.showInputDialog(null, 请输入您要设置的秒数(059):); try h2 = Integer.parseInt(h); m2 = Integer.parseInt(m); s2 = Integer.parseInt(s); catch (Exception ex) JOptionPane.showMessageDialog(null, 您的输入有误,只能输入正整数!); if (h2 23 | m2 59 | s2 59 | h2 0 | m2 0 | s2 23 | m3 59 | s3 59 | h3 0 | m3 0 | s3 0) JOptionPane.showMessageDialog(null, 您的输入有误,超出正常时间范围,请重新输入!); else TF = false; t-;/限制循环次数 if (t = 0) TF = false; while (TF); if(h3!=0 | m3!=0 | s3!=0) JOptionPane.showMessag

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论