版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、北京邮电大学世纪学院实习报告实 习 报 告 课程名称 信息系统认知实习 实习题目 java时钟动画 专 业 班 级 学号 学生姓名 实习成绩 指导教师 2010年 1 月前言设计基本的内容。现在的各种时钟花样百出,千奇百怪,功能亦是越来越先进了。我很喜欢这些各式各样的时钟,所以希望自己也能设计出一个来。于是,我希望自己能够用自己所学的Java知识设计出一个自己的时钟动画,即使是最简单的,但我相信这是暂时的。只要我能够努力学好Java知识,将来一定能够设计出更好更完美的时钟动画。第一章 技术介绍Java技术介绍、编程环境介绍JAVA技术介绍:Java技术是一门编程语言,也是一个平台,它基于Jav
2、a虚拟机技术,借助这个东西建立了跨平台的优势。(题外话:Java热门的原因之一就是一个跨平台的概念,和跨平台类似跨浏览器的好处也是如此,这也是现在AJAX技术流行的原因之一。另外现在热炒的RIA富客户端的概念下的技术除了AJAX外还有Adobe的Flash/Flex,微软的Silver Light,SUN的JavaFX等,个人更看好FLash/Flex,原因是Flash插件在浏览器端占用率很高)Java技术的重要性就不讲了,从最近流行的一个统计数据上来说,目前世界上编程语言Java 、C 、VB、C+依次排名前4位,这排名本身不说明什么,至少也是工业界对编程语言使用上一个侧面的反映吧。Java
3、编程语言与众不同之处在于:Java程序既是编译型的(转换为一种称为Java字节码的中间语言),又是解释型的(JVM 对字节码进行解析和运行)。编译只进行一次,而解释在每次运行程序时都会进行。编译后的字节码采用一种针对JVM 优化过的机器码形式;解释器是JVM 的实现。这段是摘自网上的,编译原理学的不是很好,对这门语言的背后运行机制理解到这样了。Java平台是一种纯软件平台,它有三个版本Java SE、JavaEE、Java ME。Java SE(Java Platform,Standard Edition)这个版本以前叫做J2SE,后来版本号从1.4直接跳到5.0,其实也就是1.5,所以就叫成
4、Java SE 5.0。目前Java开发人员使用较多的版本是5.0,当然还有Java SE 6.0这个更新的版本。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的Java 应用程序。Java SE还包含了支持Java Web服务开发的类,并为Java EE这个版本提供基础。虽说桌面应用程序,Java一直不被看好,但也稍微提一下,负责桌面GUI开发的类库我知道的有:JDK自带的主要是AWT/SWING这个Java原生类库;也可以使用IBM的SWT/JFace这个第三方类库。开发工具我了解的有:NetBeans(最近已经是6.0final版了,做GUI有使用VB的感觉),Eclipse
5、(SWT/JFace这个项目其实就是做Eclipse项目时扩展出来的,所以对SWT/JFace支持的也不错)。Java EE(Java Platform,Enterprise Edition)这个版本以前叫做J2EE,也就是大家可能听得比较多的,也是Java比较流行的领域,Java的企业级版本。Java EE下有很多流行的开发框架,像Struts、Spring、Hibernate这种流行的所谓SSH组合等。根据项目大小、应用领域,技术平台的选择面还是很多的,除了Java EE,还有.Net,LAMP组合(Linux、Apatch、MySql、PHP组合),相对来说比较新Ruby在Ruby on
6、 Rails的框架应用,后两者可能在相对来说比较轻量级的Web领域运用成功案例比较多,更重量的企业级潜力还有待挖掘。Java ME(Java Platform,Micro Edition)这个版本以前叫做J2ME。应用领域像各种移动设备和嵌入式设备,比如:手机、PDA、电视机顶盒和打印机。Java ME不是太熟悉,不过移动设备和嵌入式设备的开发个人觉得算是比较有意思的领域,最近比较瞩目的业界新闻有一个就是Google发布开源智能手机操作系统开发平台Android,也就是前一阵子炒得很火的GPhone(原来Google出的不是手机,而是一个手机操作系统开发平台)。这个平台貌似会对Java ME有
7、些冲击,按照网上的消息,Android包括:1、高度定制的Linux操作系统内核及智能手机硬件驱动支持;2、经过Google修改过的Java虚拟机Dalvik,这里的性能比SUN的Hotspot高,支持大部分Java核心类库;3、大量智能手机开发核心类库;4、大量现成的智能手机应用软件;5、基于Eclipse的开发环境。也是按照网上的说法,Java EE提供了统一的编程平台,但不能调用操作系统的资源;而Android下直达操作系统,上直达应用软件,如:浏览器、日历、地图等。Java开发工具很多,个人使用的IDE有Eclipse和NetBeans。Eclispe比较流行,各种插件也多,当然用起来
8、也不错;NetBeans现在也是越做越好了,介绍这两个IDE主要是开源的,当然还有其它工具如JBuilder、IntelliJ、JCreator。这些IDE各有优势劣势,根据你开发的项目来选择了。JAVA 编程环境:一.下载与安装开发工具箱(JDK) 1.java(TM) SE Development Kits,即JDK 网址: 2.设置环境变量 右击 我的电脑->属性->高级->环境变量 Path:系统在任何路径下都可以识别Java命令需要设置的变量 Path: ;C:Progran Filesjavajdk1.6.0_01bin classpath:为java
9、加载类(包括class,lib)的路径,只有类在classpath中, Java命令才能识别 classpath: .;Progran Filesjavajdk1.6.0_01libdt.jar ;Progran Filesjavajdk1.6.0_01libtools.jar JAVA_HOME:java的安装路径 JAVA_H
10、OME: Progran Filesjavajdk1.6.0_01 二.下载Java开发工具 1.下载Eclipse Eclipse3.3 网址:/ 点击Download Eclipse找到 Eclipse Classic 3.3下载 下载完后,解压即可使用 2.Eclipse插件 (1) XMLBuddy:编辑xml文件;下载地址为 (2) Fat Jar:打包插件,可以方便的完成各种打包任务,可以包含外部的包等; 下载地址为: (3) Log4E:Log4j插件,提供各种与log4j相关的任务,Lo
11、g4j专用于为程序输入调试信息 下载地址为:http:/log4j.jayefem.de/index.php/Main_Page (4) Lomboz:Ecilpse的一个J2EE的插件,可以将很多java应用服务器,J2EE组件和 web应用开发集成到Eclipse中,可以帮助Java开发者使用Eclipse建立,测试和 部署J2ee应用。支持jsp编写,包括语法着色和语法检查: 下载地址为:http:/f
12、/projects/lomboz (5) MyEclipse:J2EE开发插件,支持jsp,EJB,数据库操作; 下载地址为: (6) TomcatPlugin:支持Tomcat插件; 下载地址为: (7) 语音包:下载地址为:/eclipse/downloads第二章程序的概括设计画出流程图 开 始 initstart()run()结 束否是stop()paint()CPU休息1秒否是流程图:第三章 详细设计设计结构框图。l 构造
13、数据结构:根据程序结构框图和题目分析结果(采用算法),构造程序所用各项数据,各种窗体及他们之间的联系。l 构造程序框架:在窗体确定之后,根据算法设计出所用各个窗体之间的调用关系。l 程序设计:画出程序功能框图和结构框图;根据框图设计程序;编译程序调试程序,使程序可以使用;完备程序功能。l 程序打包:所设计程序汇总,将程序分类归入相应子目录,完成程序所有设计要求。结论经过一系列的Java程序代码的设计,虽然过程中遇到了许多的问题,但是最终解决了所有的问题,准确的设计出了时钟动画,运行情况正常。类的关系: “public class AnimatorDemo”是公共类,且是程序中的唯一的一个类。构
14、造方法、成员变量和成员方法的功能说明: “Thread timer”用于显示时钟的线程; “SimpleDateFormat formatter”用于格式化时间显示; “String lastdate”用于保存当前时间的字符串; “Font clockFaceFont”用于设置显示时钟里面的数字的字体; “Date currentDate”用于显示当前时间; “Color handColor”用于显示时针、分针和表盘的颜色; “Color numberColor” 用于显示秒针和数字的颜色; “public void init()”用于设计时钟格式并捕捉异常; “public void plo
15、tpoints(int x0, int y0, int x, int y, Graphics g)” 用于计算四分之一的圆弧; “public void circle(int x0, int y0, int r, Graphics g”) 用Bresenham算法来画圆,其中(x0,y0)是圆的中心,r为圆半径; “public void paint(Graphics g)”用于运行时钟程序; “public void start()” applet的启动方法; “public void stop()” applet的停止方法; “public void run()” 线程的run方法。附录全
16、部程序代码import java.awt.*; import java.awt.geom.Ellipse2D; import java.awt.geom.GeneralPath; import java.awt.geom.Line2D; import java.awt.geom.Rectangle2D; import java.util.Calendar; import java.util.Date; import javax.swing.BorderFactory; import javax.swing.JComponent; import javax.swing.JFrame; impor
17、t javax.swing.UIManager; public class Clock extends JComponent private static final Color INTEGRAL_COLOR = new Color(0, 128, 128); private int radius; private Calendar currentTime = Calendar.getInstance(); private double s = 0.03; public Clock(int radius) this.radius = radius; public void setCurrent
18、Time(Date time) /设置当前时间 this.currentTime.setTime(time); public void setCurrentTime(long millis) this.currentTime.setTimeInMillis(millis); public Dimension getPreferredSize() Insets insets = getInsets(); int r = (int) (radius = -1 ? 0 : radius*(1+s)+1; return new Dimension(r * 2 + insets.left + inset
19、s.right,r * 2 + insets.top + insets.bottom); /返回一个指定宽、高的Dimension protected void paintComponent(Graphics g) super.paintComponent(g); Graphics2D g2d = (Graphics2D) g; g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); Insets insets = getInsets(); int wid = getWi
20、dth() - insets.left - insets.right; int hei = getHeight() - insets.top - insets.bottom; int r = (int) (Math.min(wid, hei) / 2 / (1+s); g2d.translate(insets.left + r * (1+s), insets.top + r * (1+s); g2d.scale(1, -1); for (int i = 0; i < 60; i+) int angle = 90 - i * 6; double pos = calcPos(r, angle
21、); paintMinuteDot(r, g2d, pos0, pos1, i % 5 = 0); paintHourPointer(r, g2d); paintMinutePointer(r, g2d); paintSecondPointer(r, g2d); paintCenterPoint(g2d); g2d.scale(1, -1); g2d.translate(-insets.left - r * (1+s), -insets.top - r * (1+s); private void paintCenterPoint(Graphics2D g2d) g2d.setColor(Col
22、or.BLUE); Rectangle2D rect = new Rectangle2D.Double(-2, -2, 4, 4); g2d.fill(rect); private void paintMinutePointer(int r, Graphics2D g2d) int minute = currentTime.get(Calendar.MINUTE); int second = currentTime.get(Calendar.SECOND); double angle = 90 - (minute + second / 60.0) * 6; Shape pointerShape
23、 = createPointerShape(r * 0.8, r * 0.04, r * 0.08, angle); g2d.setColor(Color.LIGHT_GRAY); g2d.fill(pointerShape); g2d.setColor(Color.DARK_GRAY); g2d.draw(pointerShape); private void paintHourPointer(int r, Graphics2D g2d) int hour = currentTime.get(Calendar.HOUR); int minute = currentTime.get(Calen
24、dar.MINUTE); int second = currentTime.get(Calendar.SECOND); double angle = 90 - (hour + minute / 60.0 + second / 3600.0) * 30; Shape pointerShape = createPointerShape(r * 0.6, r * 0.06, r * 0.1, angle); g2d.setColor(Color.LIGHT_GRAY); g2d.fill(pointerShape); g2d.setColor(Color.DARK_GRAY); g2d.draw(p
25、ointerShape); private Shape createPointerShape(double r1, double r2, double r3, double angle) GeneralPath gp = new GeneralPath(); double pos = calcPos(r1, angle); double pos1 = calcPos(r2, angle + 90); gp.append(new Line2D.Double(pos0, pos1, pos10, pos11), true); double pos2 = calcPos(r3, angle + 18
26、0); gp.lineTo(float)pos20, (float)pos21); double pos3 = calcPos(r2, angle + 270); gp.lineTo(float)pos30, (float)pos31); gp.closePath(); return gp; private void paintSecondPointer(int r, Graphics2D g2d) g2d.setColor(Color.BLACK); int second = currentTime.get(Calendar.SECOND); int angle = 90 - second
27、* 6; double pos = calcPos(r * 0.9, angle); double pos1 = calcPos(r * 0.2, angle + 180); Line2D line = new Line2D.Double(pos10, pos11, pos0, pos1); g2d.draw(line); private void paintMinuteDot(int r, Graphics2D g2d, double x, double y, boolean flag) g2d.setColor(flag ? Color.RED : Color.BLACK); if (flag) /Rectangle2D rect = new Rectangle2D.Double( Ellipse2D rect = new Ellipse2D.Double( x - r * s, y - r * s, r * s * 2, r * s * 2); g2d.fill(rect); else /Rectangle2D rect = new Rectangle2D.Double( Ellipse2D rect = new Ellipse2D.Double( x - r * 0.02,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 弱电系统基础知识 (一)
- 秋季师生互动活动计划
- 研发团队成员激励和激励课程培训
- 提升销售技巧的行动方案计划
- 订单管理与生产计划的协调
- 生物教学团队建设计划
- 安川dx100全部课程
- 企业学校招聘会142
- 演讲背景说课模板下载
- 高中化学教师招聘高中化学必修一第4章 第4节 氨 硝酸 硫酸 第2课时教案设计
- 毕业生求职简历模板精简版
- 小学数学西南师大六年级上册二圆《圆》PPT
- 建设工程安全隐患排查表
- 山西省太原市2023届高三上学期期中数学试题
- 英文工作证明Letter-of-Employment-(模版)
- 压力式泡沫比例混合装置安装使用说明书
- 高中政治课程标准解读 汇报课件
- 整改措施及落实情况反馈表
- 基肥一生物菌肥田间肥效试验专题方案
- 辍学学生劝返记录表
- 丑小鸭-完整版PPT
评论
0/150
提交评论