【vb精品源码栏目提醒】:网学会员为需要vb精品源码的朋友们搜集整理了java 记事本 - 教育相关资料,希望对各位网友有所帮助!
实 习 报 告
课程名称 信息系统认知实习实习题目 java 记事本专 业班 级学 号学生姓名实习成绩指导教师 2010 年 1 月 北京邮电大学世纪学院实习报告 前言【摘 要】该程序是一个图形界面的 java
文档编辑器其界面主要采用了 awt 包,程序实现了文本编辑器的基本功能有:新建文件、打开文件、文件保存、文件另存为、剪切、复制、粘贴、删除、查找/替换、改变字体大小,另外还利用 Time类的 schedule 方法实现了文件的定时自动更新功能,并创建备份文件,由于该编辑器是用的 awt 包,所以在技术上没有实现将 Java 的关键字以不同颜色显示功能。
【关键字】java 编辑器 第一章 技术介绍Java 技术介绍、编程环境介绍JAVA 技术介绍: Java 技术是一门编程语言,也是一个平台,它基于 Java 虚拟机技术,借助这个东西建立了跨平台的优势。
(题外话:Java 热门的原因之一就是一个跨平台的概念,和跨平台类似跨浏览器的好处也是如此,这也是现在 AJAX 技术流行的原因之一。
另外现在热炒的 RIA 富客户端的概念下的技术除了 AJAX 外还有Adobe 的 Flash/Flex,微软的 Silver Light,SUN 的 JavaFX 等,个人更看好FLash/Flex,原因是 Flash 插件在浏览器端占用率很高) Java 技术的重要性就不讲了,从最近流行的一个统计数据上来说,目前世界上编程语言 Java 、C 、
VB、C依次排名前 4 位,这排名本身不说明什么,至少也是工业界对编程语言使用上一个侧面的反映吧。
Java 编程语言与众不同之处在于:Java 程序既是编译型的(转换为一种称为 Java 字节码的中间语言),又是解释型的(JVM 对字节码进行解析和运行)。
编译只进行一次,而解释在每次运行程序时都会进行。
编译后的字节码采用一种针对 JVM 优化过的机器码形式;解释器是 JVM 的实现。
这段是摘自网上的,编译原
理学的不是很好,对这门语言的背后运行机制理解到这样了。
Java 平台是一种纯软件平台,它有三个版本 Java SE、JavaEE、Java ME。
Java SE(Java Platform,Standard Edition)这个版本以前叫做 J2SE,后来版本号从 1.4 直接跳到 5.0,其实也就是 1.5,所以就叫成 Java SE 5.0。
目前 Java 开发人员使用较多的版本是 5.0,当然还有 Java SE 6.0 这个更新的版本。
它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应 1 北京邮电大学世纪学院实习报告用程序。
Java SE 还包含了支持 Java Web 服务开发的类,并为
Java EE 这个版本提供基础。
虽说桌面应用程序,Java 一直不被看好,但也稍微提一下,负责桌面 GUI 开发的类库我知道的有:JDK 自带的主要是 AWT/SWING 这个 Java 原生类库;也可以使用 IBM 的 SWT/JFace 这个第三方类库。
开发工具我了解的有:NetBeans(最近已经是 6.0final 版了,做 GUI 有使用
VB 的感觉),Eclipse(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 Rails 的框架应用,后两者可能在相对来说比较轻量级的 Web领域运用成功案例比较多,更重量的企业级潜力还有待挖掘。
Java ME(Java Platform,Micro Edition)这个版本以前叫做 J2ME。
应用领域像各种移动设备和嵌入式设备,比如:手机、PDA、电视机顶盒和打印机。
Java ME 不是太熟悉,不过移动设备和嵌入式设备的开发个人觉得算是比较有意思的领域,最近比较瞩目的业界新闻有一个就是 Google 发布开源智能手机操作系统开发平台 Android,也就是前一阵子炒得很火的 GPhone(原来 Google出的不是手机,而是一个手机操作系统开发平台)。
这个平台貌似会对 Java ME有些冲击,按照网上的消息,Android 包括:1、高度定制的 Linux 操作
系统内核及智能手机硬件驱动支持;2、经过 Google 修改过的 Java 虚拟机 Dalvik,这里的性能比 SUN 的 Hotspot 高,支持大部分 Java 核心类库;3、大量智能手机开发核心类库;4、大量现成的智能手机应用
软件;5、基于 Eclipse 的开发环境。
也是按照网上的说法,Java EE 提供了统一的编程平台,但不能调用操作系统的资源;而 Android 下直达操作系统,上直达应用软件,如:浏览器、日历、地图等。
Java 开发工具很多,个人使用的 IDE 有 Eclipse 和 NetBeans。
Eclispe 比较流行,各种插件也多,当然用起来也不错;NetBeans 现在也是越做越好了,介绍这两个 IDE 主要是开源的,当然还有其它工具如 JBuilder、IntelliJ、JCreator。
这些 IDE 各有优势劣势,根据你开发的项目来选择了。
2 北京邮电大学世纪学院实习报告JAVA 编程环境:一.下载与安装开发工具箱(JDK)1.javaTM SE Development Kits即 JDK网址:http://java.sun.com/javase/downloads/index.jsp2.设置环境变量右击 我的电脑-gt属性-gt高级-gt环境变量Path:系统在任何路径下都可以识别 Java 命令需要设置的变量Path: C:Progran Filesjavajdk1.6.0_01binclasspath:为 java 加载类包括 classlib的路径,只有类在 classpath 中 Java 命令才能识别classpath: .Progran Filesjavajdk1.6.0_01libdt.jar Progran Filesjavajdk1.6.0_01libtools.jarJAVA_HOME:java 的安装路径JAVA_HOME: Progran Filesjavajdk1.6.0_01二.下载 Java 开发工具1.下载 EclipseEclipse3.3网址:http://www.eclipse.org/点击『Download Eclipse』找到 『Eclipse Classic 3.3』下载下载完后,解压即可使用2.Eclipse 插件1 XMLBuddy:编辑 xml 文件下载地址为 http://www.
xmlbuddy.com2 Fat Jar:打包插件可以方便的完成各种打包任务,可以包含外部的包等 下载地址为:http://fjep.sourceforge.net/3 Log4E:Log4j 插件,提供各种与 log4j 相关的任务Log4j 专用于为程序输入调试信息 下载地址为:http://log4j.jayefem.de/index.php/Main_Page4 Lomboz:Ecilpse 的一个 J2EE 的插件,可以将很多 java 应用服务器J2EE 组件和 web 应用开发集成到 Eclipse 中,可以帮助 Java 开发者使用 Eclipse 建立,测试和 部署 J2ee 应用。
支持 jsp 编写,包括语法着色和语法检查: 下载地址为:http://forge.object
web.org/projects/lomboz5 MyEclipse:J2EE 开发插件,支持 jsp,EJB数据库操作 下载地址为:http://www.myeclipseide.com6 TomcatPlugin:支持 Tomcat 插件 下载地址为:http://www.sysdeo.com/eclipse/tomcatPlugin.html7 语音包:下载地址为:http://download.eclipse.org/eclipse/downloads 3 北京邮电大学世纪学院实习报告 第二章 程序的概括设计 画出流程图一、概要设计Java
程序编辑器是:图形界面、线程、流与文件等技术的综合应用。
图形界面的实现:考虑到简单、实用、高效等特点,就选择了 AWT 来完成实现,在选择组件上,文本编辑区就选用了 TaxtArea 作为主要的部件。
线程实现文件自动保存:在相关的参考书上查阅到在 Time 类中有一个 schedule方法可以在后台自动完成一定的功能,而且调用起来相当简单,于是就用了 Time类中的 schedule 方法来实现文件自动保存及备份功能。
文件操作的实现:利用了字符文件流 FileReader 和 FileWriter 类来实现。
由于 Java 的特性,可能用任何一个编辑器来编辑,于是就将 Windows 中的记事本作为模仿对象,根据实现情况删减了其中的一些功能,如自动换行,设置字体,打印等功能。
在设计类的时候,考虑到简单明了,就用了两个类,一个主类和一个默认属性类作为程序的整体框架,所有的对象和方法都是在默认属性类中创建和实现的,以及为各组件注册事件监听程序也是在默认属性类中实现的。
主类完成对象的实例化及显示。
这们
设计的优点是:条理清晰,容易理解,容易修改。
这样设计的缺点是:不利于共享类中的方法。
二、程序整体设计说明2.1、程序框架图2.2、程序中所用类说明 4 北京邮电大学世纪学院实习报告(1)用户自定义类类名:EditInstantiation作用:实例化对象继承的父类:WindowAdapter主要成员变量:Frame myFrm // 定义主窗体TextArea myText // 定义文本编辑区Dialog myDlgFind,myDlgFindont //查找及设置字体对话框TextField TFfind TFreplace TffontSize//查找对话框和字体窗体中的文本行Button BfontOK Bfind Breplace Bnext Bcancel //定义和创建各按钮Label Lf Lr Ls //定义和创建各标签MenuBar Mbbar //定义和创建主菜单Menu MfileMeditMformationMhelp //定义和创建主菜单中的选项 Toolkit toolKit Clipboard myCB //剪切板对象 FileDialog myFDlg //定义文件对话框 Choice ChfontName //定义和创建字体选择框 private int VIindex 1 //构成文件名后缀变量 private String VSsubFixStrquot.javaquot //构成文件名扩展名变量 private String VSmyFileName quotDocument1quotVSmyBFileName //文件名及备份文件名变量 private File VFmyFilenew FileVSmyFileNameVIindexquot.javaquot //文件名变量 private int VIsearchPosition0 //查找位置指针 private Timer VTtime //实例化一个 Time 类 private int VImin1 // schedule 方法中的一个时间参数 private int VItypeJOptionPane.INFORMATION_MESSAGE //提示对话框类型 private String VStitle //提示对话框标题 private String VSmessage //提示对话框信息 private boolean
VBchanged true //改变字体的一个标识 private int VIfontSizeMin 8 VIfontSizeMax 40 VIfontSizeChangedStep 2 //设置字体大小及步长主要成员方法:public void init //初始化各部件菜单的定义和事件的监听 5 北京邮电大学世纪学院实习
报告public void displayEdit //显示窗体及调用 Time 中的 schedule 方法public void windowClosing //关闭窗体public void save //保存文件方法a.内部类类名:KeyEvents作用:实现菜单的事件的响应功能继承的父类:KeyAdapter主要成员变量:无成员方法:actionPerformed、keyPressedb.内部类类名:FindKeyEvent作用:实现查找中各部件事件的响应功能继承的父类:无主要成员变量:无成员方法:actionPerformed c.内部类类名:fontEvent作用:实现字体中各部件事件的响应功能继承的父类:无主要成员变量:无成员方法:ItemListenerActionListener2.3、实现接口方法本程序用到的方法有:schedule 其方法描述如下:schedule事件,启动时间,间隔时间;2.4、线程应用本程序为文本编辑器,为实现自动更新,应用到了线程,每隔 1 分钟对文件进行自动更新2.5、异常处理说明(1)打开文件时的异常处理需要处理的异常:IOException处理方法:捕获异常后,显示捕获的异常(2)保存文件时的异常处理需要处理的异常:IOException处理方法:捕获异常后,显示捕获的异常 第三章 详细设计程序部分
源代码及注释// 6 北京邮电大学世纪学院实习报告// class name :Edit// implements :none// extends :none// attribute :public// founction :entrance of the class//public class Edit //主类 public static void mainString args EditInstantiation myEdit new EditInstantiation myEdit.init //初始化 myEdit.displayEdit //显示窗体 //// class name :EditInstantiation// implements :none// extends :WindowAdapter// attribute :default// founction :EditInstantiation of the main class//class EditInstantiation extends WindowAdapter //默认属性类 //define sources 定义各部件 Frame myFrmnew Framequot我的编辑器quot //定义窗体 TextArea myTextnew TextArea //定义窗体 Dialog myDlgFindnew DialogmyFrmquot查找quottrue //定义查找对话框 Dialog myDlgFindontnew DialogmyFrmquot字体quottrue //定义字体对话框 TextField TFfindnew TextField30//定义查找对话中的查找输入框 TextField TFreplacenew TextField30 //定义查找对话中的替换输入框 TextField TFfontSizeTFfontDemo//定义字体大小文本框和示例框 Choice CHfontName//定义字体大小选择框 List LTfontSize //定义字体大小标签 Button BfontOKBfontCancel //定义字体大小对话中的确定及取消按钮 Button Bfindnew Buttonquot查找quot//定义查找对话中的查找按钮 Button Breplacenew Buttonquot替换quot//定义查找对话中的替换及取消按钮Button Bnextnew Buttonquot下一个quot//定义查找对话中的下一个及取消按钮 Button Bcancelnew Buttonquot取消quot//定义查找对话中的确定及取消按钮 Label Lfnew Labelquot查找内容:quot 7 北京邮电大学世纪学院实习报告 Label Lrnew Labelquot替换为: quot Label Lsnew Labelquot字体大小:quot FileDialog myFDlg Clipboard myCBToolkit.getDefaultToolkit.getSystemClipboard //剪切板对象 Menu MfileMeditMformationMhelp MenuBar MBbar //define varities //定义各变量 private int VIindex 1 private String VSsubFixStrquot.javaquot private String VSmyFileName quotDocument1quotVSmyBFileName private File VFmyFilenew FileVSmyFileNameVIindexquot.javaquot private int VIsearchPosition0 private Timer VTtime private int VImin1 // parameter in time schedul private int VItypeJOptionPane.INFORMATION_MESSAGE private String VStitle private String VSmessage // flag of the changeing private boolean VBchanged true // the scope of the font private int VIfontSizeMin 8 VIfontSizeMax 40 VIfontSizeChangedStep 2 // //founction name:init //parameter :none //attribute :public //founction :initia all compont // public void init //初始化各部件 //------------------ set menu ------------------ MBbarnew MenuBar myFrm.setMenuBarMBbar Mfilenew Menuquot文件quot Meditnew Menuquot编辑quot 8 北京邮电大学世纪学院实习报告 Mformationnew Menuquot格式quot Mhelpnew Menuquot帮助quot MBbar.addMfile MBbar.addMedit MBbar.addMformation MBbar.addMhelp //文件菜单 add File menu Mfile.addnew MenuItemquot新建quotnew MenuShortcutKeyEvent.VK_N Mfile.addnew MenuItemquot打开quotnew MenuShortcutKeyEvent.VK_O Mfile.addnew MenuItemquot保存quotnew MenuShortcutKeyEvent.VK_S Mfile.addnew MenuItemquot另存为quot Mfile.addSeparator//分隔线 Mfile.addnew MenuItemquot退出quotnew MenuShortcutKeyEvent.VK_E //编辑菜单 add Edit menu Medit.addnew MenuItemquot剪切quot//newMenuShortcutKeyEvent.VK_X Medit.addnew MenuItemquot复制quot//newMenuShortcutKeyEvent.VK_C Medit.addnew MenuItemquot粘贴quot//newMenuShortcutKeyEvent.VK_V Medit.addnew MenuItemquot删除quot//newMenuShortcutKeyEvent.VK_D Medit.addSeparator//分隔线 Medit.addnew MenuItemquot查找/替换quotnewMenuShortcutKeyEvent.VK_F Medit.addSeparator//分隔线 Medit.addnew MenuItemquot全选quotnewMenuShortcutKeyEvent.VK_A //格式菜单 add Formation menu Mformation.addnew MenuItemquot字体quotnewMenuShortcutKeyEvent.VK_U //帮助菜单 add Formation menu 9 北京邮电大学世纪学院实习报告 Mhelp.addnew MenuItemquot关于作者quot //----------------- menu add end ------------------------- //add Menu Action Listener Mfile.addActionListenernew KeyEvents Medit.addActionListenernew KeyEvents Mformation.addActionListenernew KeyEvents Mhelp.addActionListenernew FindKeyEvent //--------------------------- Find dialog-----------------myDlgFind.setSize350115myDlgFind.setLocation250150myDlgFind.setLayoutnew FlowLayoutFlowLayout.CENTERmyDlgFind.setBackgroundColor.LIGHT_GRAYBfind.setEnabledfalse Breplace.setEnabledfalse Bnext.setEnabledfalsemyDlgFind.addLfmyDlgFind.addTFfindmyDlgFind.addLrmyDlgFind.addTFreplacemyDlgFind.addBfindmyDlgFind.addBreplacemyDlgFind.addBnextmyDlgFind.addBcancel myDlgFind.addWindowListenernew WindowAdapter public void windowClosingWindowEvent e myDlgFind.setVisiblefalse //为查找对话框窗体
注册事件监听TFfind.addKeyListenernew KeyEvents//注册事件监听Bfind.addActionListenernew FindKeyEventBreplace.addActionListenernew FindKeyEventBcancel.addActionListenernew FindKeyEventBnext.addActionListenernew FindKeyEvent //--------------- end a.