java记事本程序论文_第1页
java记事本程序论文_第2页
java记事本程序论文_第3页
java记事本程序论文_第4页
java记事本程序论文_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

1、摘 要该报告中的程序是使用Java程序编写,能够进行输入文字操作,并具有新建文件,打开文件,保存文件,退出,复制,粘贴,剪切等功能,其界面主要采用了Javax swing包,该程序编程由MyEclipse软件完成Swing是一个用于开发Java应用程序用户界面的开发工具包。它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。所以只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。关键字:java 程序 Swing MyEclipse 记事本目 录第1章 概要设计11.1需求分析11.2功能设计11.3明确任务21.4本章小节2第2章

2、程序概要设计32.1程序设计思路32.2程序运行界面32.3模块程序流程图52.4程序部分源代码及注释72.5本章小节12第3章 设计中遇到的重点及难点143.1设计中遇到的重点143.2设计中的遇到的难点143.3本章小节15第4章 本次设计中存在不足与改良方案164.1本次设计中存在的不足164.2本次设计的改良方案164.3本章小节17结 论18参考文献19致 谢20指导教师评语21答辩委员会评语22第1章概要设计1.1需求分析现在网络上各种文档编辑器数不胜数,有EmEditor,UEStudio,GridinSoftNotepad,Notepad+,win32pad,SkimEdit,

3、UniRed,xint。功能也是应有尽有,有能改变字体的,有能改变文字颜色的。但是,这些软件又存在各种各样的瑕疵或问题:有的文件体积相对于一般文字编辑来说太大;有的功能太繁杂,使初级使用者一时难以掌握。仅从日常应用方面来说,一个文本编辑器只需一些简单实用的功能就够了。本程序设计就是依照这样一种使用需要设计了一个简单的记事本程序。计算机正以其前所未有的惊人速度向前发展,新的研究成果、新的实用软件不断涌现。计算机应用也普及到各行各业、深入到人类各种社会活动和生产中。为了便于对大量信息的处理,运用计算机软件实现自动管理成为了必然的趋势。“记事本”是一个用来创建简单的文档的基本的文本编辑器。“记事本”

4、最常用来查看或编辑文本 (.txt) 文件,也可以作为创建 Web 页的简单工具。所以我们需要开发一个记事本系统来实现大量信息的管理。开发工具是完成整个设计的重要基础,没有工具我们就无法进行开发和设计工作,所以开发工具的选择也就成为了我们开发过程中很关键的一步。1.2功能设计本程序要构建的记事本程序参照了Windows操作系统的记事本工具,其功能有以下几个方面:菜单中有“文件”,“编辑”,“格式”,“查看”,“帮助”五个主菜单。“文件”有“新建”,“打于”,“保存”,“另存为”,“页面设置”“退出”,五个子菜单。“编辑”中有“撤销”,“剪切”,“复制”,“粘贴”,“删除”,“查找”,“查找替换

5、”,“转到”,“全选”,“时间日期”,用于对文档的编辑。“格式”有“自动换行”,“字体”。“查看”有“状态栏”。“帮助”有“帮助主题”,“关于主题”。1.3 明确任务用java编写一个简单的记事本,使其能够实现最基本的功能,如文件的打开、新建、保存、退出,编辑的删除、全选、剪切、复制、粘贴,格式的字体等等。1.4 本章小结通过第一章我们可以了解到这次java课程设计的一个总的概况。本次程序设计的理念就是简单方便使用,这次设计的优点是:条理清晰,容易理解,容易修改。第2章程序概要设计2.1 程序设计思路在本程序中,设计了一个菜单栏和文本内容区。设计过程中用到了JMenuBar,JMenu,JMe

6、nuItem,JTextArea等。JMenu 用来制作菜单。JTextArea主要用来制作文本。动作执行主要思路就是利用ActionListener接口为每一个JMenuItem设置ActionCommand名称然后再actionPerformed方法中判断执行动作。2.2 程序运行界面(1)程序运行主要界面如下:(2)打开:(2)保存:2.3模块程序流程图创建一个note的类继承JFrame类noteActionListener,WindowListener,ItemListenerimplemnetsextendsJFrame模块说明图note构造方法新建初始化容器组件初始化初始化菜单栏

7、文字输入区文件编辑格式查看帮助打开保存退出等撤销粘贴等剪切复制自动换行字体状态栏帮助关于添加事件监听构造note类 初始化容器、初始化组件、设置事件监听。程序流程图启动程序ta.setText(null)输入文字新建打开保存退出复制粘贴剪切字体关于Open.setvisible(true)saveFile()System.exit(0)ta.copy()ta.paste()ta.cut()New MyFont()showMessageDialogtruetruetruetruetruetruetruetruetruefalse2.4程序部分源代码及注释import java.awt.*; /包

8、含用于创建用户界面和绘制图形图像的所有类import java.awt.event.*; /提供处理由 AWT 组件所激发的各类事件的接口和类。import java.text.*; /提供以与自然语言无关的方式来处理文本、日期、数字和消息的类和接口。import java.util.*; /包含集合框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。import java.io.*; /通过数据流、序列化和文件系统提供系统输入和输出。import javax.swing.*; /提供一组“轻量级”(全部是 Jav

9、a 语言)组件,尽量让这些组件在所有平台上的工作方式都相同。import javax.swing.event.*; /供 Swing 组件触发的事件使用。JMenu /定义菜单JMenuItem /菜单中项的实现JMenuBar /菜单栏的实现。将 JMenu 对象添加到菜单栏以构造菜单。JCheckBoxMenuItem /可以被选定或取消选定的菜单项。如果被选定,菜单项的旁边通常会出现一个复选标记。如果未被选定或被取消选定,菜单项的旁边就没有复选标记JtextArea /JTextArea 是一个显示纯文本的多行区域。JLabel /用于短文本字符串或图像或JScrollPane scro

10、ll = new JScrollPane(ta);/添加文本区滚动区scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);/滚动条scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); container.add(scroll, BorderLayout.CENTER);/设置滚动条布局m21=new JMenuItem("撤销(U)",'U');/设置子菜单初始化m2

11、1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,InputEvent.CTRL_MASK);/设置子菜单快捷方式可用m2.add(m21);/向菜单中添加m21.setEnabled(false);/设置子菜单当前不可用m21.setActionCommand("撤销");/设置子菜单按钮名称m21.addActionListener(this);/监听子菜单事件public void actionPerformed(ActionEvent e) / 实现ActionListener的事件处理方法由于程序中多处会用

12、到保存所以就建立了个一个保存方法方便调用public void saveFile() save.setVisible(true);try File f1=new File(save.getDirectory(),save.getFile(); FileWriter fw=new FileWriter(f1); BufferedWriter bw=new BufferedWriter(fw); String gt=ta.getText(); bw.write(gt,0,gt.length(); bw.flush(); fw.close(); t1=ta.getText();this.opath=

13、f1.getPath(); catch ( Exception e2) 本程序中重点的方法/查找替换-public void mySearch() final JDialog findDialog = new JDialog(this, "查找与替换", true);Container con = findDialog.getContentPane();con.setLayout(new FlowLayout(FlowLayout.LEFT);JLabel searchContentLabel = new JLabel("查找内容(N) :");JLab

14、el replaceContentLabel = new JLabel("替换为(P) :");final JTextField findText = new JTextField(22);final JTextField replaceText = new JTextField(22);final JCheckBox matchcase = new JCheckBox("区分大小写");JButton searchNext = new JButton("查找下一个(F)");JButton replace = new JButton

15、("替换(R)");final JButton replaceAll = new JButton("全部替换(A)");searchNext.setPreferredSize(new Dimension(110, 22);replace.setPreferredSize(new Dimension(110, 22);replaceAll.setPreferredSize(new Dimension(110, 22);/ "替换"按钮的事件处理replace.addActionListener(new ActionListener()

16、public void actionPerformed(ActionEvent e) if (replaceText.getText().length() = 0 && ta.getSelectedText() != null)ta.replaceSelection("");if (replaceText.getText().length() > 0 && ta.getSelectedText() != null)ta.replaceSelection(replaceText.getText(););/ "替换全部"

17、按钮的事件处理replaceAll.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) ta.setCaretPosition(0); / 将光标放到编辑区开头int a = 0, b = 0, replaceCount = 0;if (findText.getText().length() = 0) JOptionPane.showMessageDialog(findDialog, "请填写查找内容!", "提示", JOptionPane.

18、WARNING_MESSAGE);findText.requestFocus(true);return;while (a > -1) int FindStartPos = ta.getCaretPosition();String str1, str2, str3, str4, strA, strB;str1 = ta.getText();str2 = str1.toLowerCase();str3 = findText.getText();str4 = str3.toLowerCase();if (matchcase.isSelected() strA = str1;strB = str

19、3; else strA = str2;strB = str4;if (ta.getSelectedText() = null) a = strA.indexOf(strB, FindStartPos); else a = strA.indexOf(strB, FindStartPos - findText.getText().length() + 1);if (a > -1) ta.setCaretPosition(a);b = findText.getText().length();ta.select(a, a + b); else if (replaceCount = 0) JOp

20、tionPane.showMessageDialog(findDialog, "找不到您查找的内容!", "记事本", JOptionPane.INFORMATION_MESSAGE); else JOptionPane.showMessageDialog(findDialog, "成功替换" + replaceCount + "个匹配内容!", "替换成功", JOptionPane.INFORMATION_MESSAGE);if (replaceText.getText().length()

21、 = 0 && ta.getSelectedText() != null) ta.replaceSelection("");replaceCount+;if (replaceText.getText().length() > 0 && ta.getSelectedText() != null) ta.replaceSelection(replaceText.getText();replaceCount+;/ end while); /* "替换全部"按钮的事件处理结束 */ "查找下一个"按钮事件

22、处理searchNext.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) int a = 0, b = 0;int FindStartPos = ta.getCaretPosition();String str1, str2, str3, str4, strA, strB;str1 = ta.getText();str2 = str1.toLowerCase();str3 = findText.getText();str4 = str3.toLowerCase();/ "

23、;区分大小写"的CheckBox被选中if (matchcase.isSelected() strA = str1;strB = str3; else strA = str2;strB = str4;if (ta.getSelectedText() = null) a = strA.indexOf(strB, FindStartPos); else a = strA.indexOf(strB, FindStartPos - findText.getText().length() + 1);if (a > -1) ta.setCaretPosition(a);b = findTe

24、xt.getText().length();ta.select(a, a + b); else JOptionPane.showMessageDialog(null, "找不到您查找的内容!", "记事本", JOptionPane.INFORMATION_MESSAGE););/* "查找下一个"按钮事件处理结束 */2.4本章小结本章主要介绍了用java创建记事本的主要代码以及运行后的效果图。运行java记事本以后出现的那个框架图就是我们所说的java图形用户界面(GUI),它是程序与用户进行交流的图像窗口,为应用程序提供一个图形

25、化的界面,程序通过GUI与用户交互,GUI通过事件机制响应用户和程序的交互。如当用户单击某个按钮时就会产生动作事件,要处理产生的事件,需要在特定的方法中编写处理事件的程序。这样,当产生某种事件时就会调用处理这种事件的方法,从而实现用户与程序的交互。另外GUI能使一个应用程序具有与众不同的“外观”与“感觉”。有了GUI,用户就不用花很多时间去记忆各个键盘序列的功能,从而把更多的时间投入到有效地使用应用程序本身上。第3章设计中遇到的重点及难点3.1设计中遇到的重点在这次设计中,遇到的重点有以下两点:(1)Java记事本的替换与查找是本次设计的重点,在(2)java记事本中还用到了继承继承是面向对象

26、方法中一个十分重要的的概念,并且是提高软件开发效率的重要原因之一。继承实际上是存在于面向对象程序中的两个类之间的一种关系。继承的实现主要有以下几个步骤。(1)确定父类。根据将创建的子类需要选择一个相应的类作为继承父类。新定义的子类可以从父类那里自动继承所有非私有的属性和方法作为自己的成员。选择一个恰当的父类可以达到事半功倍的效果。(2)定义子类。Java中的继承是通过extends关键字来实现的,在定义类时使用extends关键字指明新定义类的父类,就在两个类之间建立了继承关系。(3)实现子类的功能。子类具体要实现的功能由类体中相应的域和方法来实现,其编写和一般的类是完全相同的。通过继承,子类

27、拥有父类的所有非私有成员。使用继承具有以下的好处:降低了代码编写中的冗余度,更好地实现了代码复用的功能,从而提高了程序编写的效率;由于降低了代码的冗余度,使得程序在维护时就变得非常的方便。3.2设计中遇到的难点在编写java记事本文件中的新建、关闭时,要经常判断文本中的内容是否已经保存,所以经常要做判断语句这样就能使这个记事本能更加完善友好。还有计算机语言的程序都难免有漏洞,捕获异常也是经常出现的错误最理想的是在编译期间,最好在试图运行程序以前。Java支持的异常处理功能比其他语言提供的更灵活。当java程序执行中发生错误时,错误事件对象可能导致的程序运行错误称为异常,异常会输出错误消息,使其

28、知道该如何正确地处理遇到的问题。当java运行系统在得到一个异常对象时,它将会寻找处理这一异常的代码,找到能够处理这种类型异常的方法后,运行时系统把当前异常对象交给这个方法进行处理,这一过程称为捕获(catch)异常。如果java运行时系统找不到可以捕获异常的方法,则运行时系统将会终止,相应的java程序也将退出。这次在java记事本程序用到的就是try,catch来捕获的异常。3.3本章小结通过这一章我们了解到了继承和异常的处理。在面向对象的程序设计中,通过采用继承的机制来组织、设计系统中的类,可以提高程序的抽象程序,使之更接近于人类的思维方式,同时也可以提高程序开发效率,降低维护的工作量。

29、我们还知道了一些异常处理的情况,异常是在运行时发生的错误,使用java异常处理子系统,就可以用一种结构化的可控方式来处理运行时的错误。在使用try, catch来捕获异常时。这两个关键字要一起使用,只有try而没有catch,或者是只有catch而没有try都是不可以的。当try描述的代码段遇到异常发生时,计算机控制权由try转移到catch异常处理代码块。当抛出一个异常时,异常会由相应的catch语句来捕获并处理。第4章本次设计存在不足与改良方案4.1 本次设计中存在的不足在本次设计中主要有以下几个方面是不完善的。(1)页面设置的不足页面设置只有这个窗体,不能实现与文本连接:图4-1页面设置(2)撤销和鼠标右键没有完成由于水平有限,撤销和鼠标右键功能尚未添加4.2本次设计的改良方案整体结构合理,模块化结构,界面清晰,接口灵活,操作简便。开发方法,文档规范化,便于管理,可扩充。添加上撤销和鼠标右键功能,使程序更加完善。4.3本章小结通过对本程序的改良,这个程序将会更加完善,问题都是我们自己发现的,只要我们多做,就会发现问题,只有发现

温馨提示

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

评论

0/150

提交评论