1、 JAVA记事本设计摘要 该报告中的程序是使用Java程序编写,能够进行输入文字操作,并具有新建文件,打开文件,保存文件,退出,复制,粘贴,剪切等功能,不同之处是本程序能够对文字的颜色进行设置。该程序主要用到了Java swing和事件监听等。关键字:记事本程序;Java语言;Jcreator前言Java的前身是Oak,它一开始只是被应用于消费性电子产品中。后来它的开发者们发现它还可以被用于更大范围的Internet上。1995年,Java语言的名字从Oak编程了Java。1997年J2SE1.1发布。1998年J2SE1.2发布,标志Java2的诞生。十多年来,Java编程语言及平台成功地运
2、用在网络计算及移动等各个领域。Java的体系结构由Java语言、Java class、Java API、Java虚拟机组成。它具有简单、面向对象、健壮、安全、结构中立、可移植和高效能等众多优点。Java支持多线程编程,Java运行时系统在多线程同步方面具有成熟的解决方案。Java的平台标准有Java ME,Java SE和Java EE。Java发展到今天,它的卓越成就及在业界的地位毋庸置疑。目前在众多的支持Java的开发工具中主要的7有Java Development Kit,NetBeans,Jcreator,JBuilder,JDeveloper和Eclipse等。其中Java Deve
3、lopment Kit 简称JDK是大多开发工具的基础。以上的每种开发工具都有优缺点,对于开发者来说,重要的是要根据自己的开发规模、开发内容和软硬件环境等因素来选择一种合适的开发工具。在本程序设计中,因为需要开发的是记事本程序,规模较小,内容较少,所以选择了适合初学者使用的JCreator开发工具。1需求分析1.1需求分析现在网络上各种文档编辑器数不胜数,有EmEditor ,UEStudio ,GridinSoft Notepad ,Notepad+,win32pad ,SkimEdit,UniRed, xint 。功能也是应有尽有,有能改变字体的,有能改变文字颜色的。但是,这些软件又存在各
4、种各样的瑕疵或问题:有的文件体积相对于一般文字编辑来说太大;有的功能太繁杂,使初级使用者一时难以掌握。仅从日常应用方面来说,一个文本编辑器只需一些简单实用的功能就够了。本程序设计就是依照这样一种使用需要设计了一个简单的记事本程序。1.2功能设计本程序要构建的记事本程序参照了Windows操作系统的记事本工具,其功能有以下几个方面:(1).菜单中有“文件”,“编辑”,“关于”三个主菜单。(2)“文件”有“新建”“打开”“保存”“退出”四个子菜单:分别用于新建文件,打开文件,保存文件,退出记事本。(3)“编辑”中有“剪切”“复制”“粘贴”“颜色”三个字菜单:用于剪切文字,复制文字,粘贴文字。 (4
5、)“关于”菜单中有关于记事本程序的版本,作者等信息2.概要设计2.1程序设计思路在本程序中,设计了一个菜单栏和文本内容区。设计过程中用到了JScrollPane,JMenu,JTextPane,JFileChooser等。JMenu用来制作菜单,菜单包括“文件”“编辑”“关于”。JTextPane主要用来输入文本。2.2模块说明图implementsActionListenerjsbJFrameextends 图1在图1中,首先创建一个名为jsb的类并继承JFrame类作为最底层的容器。jsb的构造方法添加事件监听初始化容器组件初始化初始化文字输入区菜单栏关于编辑文件关于粘贴复制剪切退出保存打
6、开新建 图2 2.3程序流程图启动程序输入文字 False False 关于粘贴复制退出剪切保存打开新建 file=null true true true true true true trueabout.show()file=openfilecontent.pastesavingcontent.copy()System.exit(0)content.cut()关闭或退出程序 图33系统详细设计1:界面设计创建一个下拉菜单和文本域,在文本域中显示编辑的文件信息。 f=new Frame(s); p1=new TextArea(); f.setSize(400,600); f.setBackgr
7、ound(Color.white); f.setVisible(true); menubar=new MenuBar(); menu1=new Menu(文件); menu2=new Menu(编辑); menu3=new Menu(帮助); item1=new MenuItem(新建); item2=new MenuItem(打开); item3=new MenuItem(保存); item4=new MenuItem(另存为); item5=new MenuItem(退出); item6=new MenuItem(全选); item7=new MenuItem(复制); item8=new
8、 MenuItem(剪切); item9=new MenuItem(粘贴); item10=new MenuItem(关于); menu1.add(item1); menu1.add(item2); menu1.add(item4); menu1.add(item5); menu2.add(item6); menu2.add(item7); menu2.add(item8); menu2.add(item9); menu3.add(item10); menubar.add(menu1); menubar.add(menu2); menubar.add(menu3); f.setMenuBar(
9、menubar);2:功能设计对每个菜单项进行注册监听。点击不同菜单项时,显示不同界面。主要代码item1.addActionListener(this); item2.addActionListener(this); item3.addActionListener(this); item4.addActionListener(this); item5.addActionListener(this); item6.addActionListener(this); item7.addActionListener(this); item8.addActionListener(this); item
10、9.addActionListener(this); item10.addActionListener(this);3:菜单设计部分菜单项的相关代码:新建文件if (e.getSource()=item1) if (i=0&(ss.length()!=0) bc(); else p1.setText();i=0;f.setTitle(文件对话框); 打开文件if (e.getSource()=item2) fd=new FileDialog(f,打开文件,0);fd.setVisible(true); try file=new File(fd.getDirectory(),fd.getFile
11、(); f.setTitle(fd.getFile()+文件对话框); FileReader fr=new FileReader(file); BufferedReader br=new BufferedReader(fr); String line = null; String view = ; while(line=br.readLine()!=null) view += line+n; p1.setText(view); br.close(); fr.close(); catch(IOException expIn) 复制文件if (e.getSource()=item7) try St
12、ring str=p1.getSelectedText(); if(str.length()!=0) strt=str; catch(Exception ex) 粘贴文件if (e.getSource()=item9) if(strt.length()0) p1.insert(strt,p1.getCaretPosition(); 退出记事本if (e.getSource()=item5) if (i=0 &(ss.length()!=0) bc(); else System.exit(0); 异常处理在运行程序代码是有可能会产生异常情况或异常事件,为了避免这种情况,就需要在程序中用到Java
13、异常处理机制。本程序中选用的异常处理机制是try,catch。捕获处理异常的第一步是用try选定要监控的异常范围,try后跟随catch代码块。try file=new File(fd.getDirectory(),fd.getFile(); f.setTitle(fd.getFile()+文件对话框); FileReader fr=new FileReader(file);BufferedReader br=new BufferedReader(fr); String line = null; String view = ; while(line=br.readLine()!=null) v
14、iew += line+n; p1.setText(view); br.close(); fr.close(); catch(IOException expIn) if (e.getSource()=item3) if (i=0) bc(); else try file=new File(fd.getDirectory(),fd.getFile(); f.setTitle(fd.getFile()+-记事本); FileWriter fw=new FileWriter(file);BufferedWriter bw=new BufferedWriter(fw); String s =p1.ge
15、tText(); s = s.replaceAll(n,rn); bw.write(s); bw.flush(); bw.close();fw.close(); i=1; catch(IOException expOut)i=0;4:系统调试运行1.菜单功能打开: 帮助: 2.按钮功能点击关闭按钮,显示表示关闭成功.5.源代码import java.awt.event.*; import java.awt.*; import java.io.*; import java.lang.String; class jsb implements ActionListener Dialog bb; St
16、ring strt; int i; FileDialog fd; File file; public Frame f; public TextArea p1; public MenuBar menubar; public Menu menu1,menu2,menu3; public MenuItem item1,item2,item3,item4,item5,item6,item7,item8,item9,item10; jsb(String s) i=0; f=new Frame(s); p1=new TextArea(); f.setSize(500,500); f.setBackgrou
17、nd(Color.white); f.setVisible(true); menubar=new MenuBar(); menu1=new Menu(文件); menu2=new Menu(编辑); menu3=new Menu(帮助); item1=new MenuItem(新建); item2=new MenuItem(打开); item3=new MenuItem(保存); item4=new MenuItem(另存为); item5=new MenuItem(退出); item6=new MenuItem(全选); item7=new MenuItem(复制); item8=new M
18、enuItem(剪切); item9=new MenuItem(粘贴); item10=new MenuItem(关于); f.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) f.setVisible(false);System.exit(0); ); menu1.add(item1); menu1.add(item2); menu1.add(item3); menu1.add(item4); menu1.add(item5); menu2.add(item6); menu2.add(
19、item7); menu2.add(item8); menu2.add(item9); menu3.add(item10); menubar.add(menu1); menubar.add(menu2); menubar.add(menu3); f.setMenuBar(menubar); item1.addActionListener(this); item2.addActionListener(this); item3.addActionListener(this); item4.addActionListener(this); item5.addActionListener(this);
20、 item6.addActionListener(this); item7.addActionListener(this); item8.addActionListener(this); item9.addActionListener(this); item10.addActionListener(this); f.setLayout(new GridLayout(1,1); f.add(p1);f.pack(); public void actionPerformed(ActionEvent e) String ss; ss=p1.getText().trim(); if (e.getSou
21、rce()=item5) if (i=0 &(ss.length()!=0) bc(); else System.exit(0); if (e.getSource()=item1) if (i=0&(ss.length()!=0) bc(); else p1.setText();i=0;f.setTitle(文件对话框); if (e.getSource()=item2) fd=new FileDialog(f,打开文件,0);fd.setVisible(true); try file=new File(fd.getDirectory(),fd.getFile(); f.setTitle(fd
22、.getFile()+文件对话框); FileReader fr=new FileReader(file);BufferedReader br=new BufferedReader(fr); String line = null; String view = ; while(line=br.readLine()!=null) view += line+n; p1.setText(view); br.close(); fr.close(); catch(IOException expIn) if (e.getSource()=item3) if (i=0) bc(); else try file
23、=new File(fd.getDirectory(),fd.getFile(); f.setTitle(fd.getFile()+-记事本); FileWriter fw=new FileWriter(file);BufferedWriter bw=new BufferedWriter(fw); String s =p1.getText(); s = s.replaceAll(n,rn); bw.write(s); bw.flush(); bw.close();fw.close(); i=1; catch(IOException expOut)i=0; if (e.getSource()=i
24、tem4) bc(); if (e.getSource()=item10) bb=new Dialog(f,关于); Label l1=new Label(版本:1.0 作者:魏泽平); bb.add(l1); bb.setSize(250,150); bb.setBackground(Color.white); bb.show(); bb.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) bb.setVisible(false);bb.dispose(); ); if (e.getSo
25、urce()=item6) p1.setSelectionStart(0); p1.setSelectionEnd(p1.getText().length(); if (e.getSource()=item7) try String str=p1.getSelectedText(); if(str.length()!=0) strt=str; catch(Exception ex) if (e.getSource()=item8) try String str=p1.getSelectedText(); if(str.length()!=0) p1.replaceRange(,p1.getSe
26、lectionStart(),p1.getSelectionEnd(); catch(Exception ex) if (e.getSource()=item9) if(strt.length()0) p1.insert(strt,p1.getCaretPosition(); public void bc() fd=new FileDialog(f,保存文件,1);fd.setVisible(true); try file=new File(fd.getDirectory(),fd.getFile(); f.setTitle(fd.getFile()+-记事本); FileWriter fw=
27、new FileWriter(file);BufferedWriter bw=new BufferedWriter(fw); String s =p1.getText(); s = s.replaceAll(n,rn); bw.write(s); bw.flush(); bw.close();fw.close(); i=1; catch(IOException expOut) public static void main(String args) new jsb(记事本); 6.总结与思考通过此次课程设计,将我本学期所学的JAVA知识得到巩固和应用,在设计的过程中我遇到了很到问题,不过在老师和同学们的帮助和自己的思考下还是很好的完成了。这此课程设计还让我懂得了写程序不能闭门造车,要努力拓宽知识面,开阔视野,拓展思维。它还让我学会了在网上查阅那些无限的资料。通过对此课题的开发,使我对jcreator开发平台有了一个比较清楚的认识,体会到理论和实践的重要性。由于自己的分析设计和程序经验不足,该系统设计和实现过程中,还有许多没有完善的地方,比如用户界面设计不够美观,异常出错处理比较差等多方面问题,这些都有待进一步完善和提高。对于文中出现的不足和系统中出现的问题敬请老师指导。.忽略此处.