《Java课程设计--简单的记事本程序.docx》由会员分享,可在线阅读,更多相关《Java课程设计--简单的记事本程序.docx(19页珍藏版)》请在优知文库上搜索。
1、第1章课题概述11.1 课题的目的11.2 课题的要求11.2.1界面要求:1L2.2程序功能要求:11.3设备与环境1第2章概要设计22.1 整个程序的模块结构22.2 各个功能的描述22.2.1新建功能22.2.2打开功能22.2.3保存功能22.2.4另存为功能22.2.5查找功能32. 2.6替换功能3第3章程序功能的实现43.1主窗口的实现43. 2各个功能的实现43. 2.1新建的实现43. 2.2打开的实现53. 2.3保存的实现63. 2.4另存为的实现74. 2.5查找的实现83.2.6替换的实现10第4章调试及发现问题的解决H第5章程序测试及分析12第6章总结15参考文献1
2、6第1章课题概述仿照Window系统中的“记事本”利用JaVa的GUI和文件输入输出流实现一个简单的记事本程序。要求能实现编辑、保存、另存为、查找和替换等功能。1.1课题的目的记事本是当代计算机操作系统当中功能最强大的工具之一,用户不仅可以用它记录生活和工作上的事,还可以用它来编写程序。如今我想运用自己学的java知识来编写一个记事本程序,同时可以利用Java的跨平台性,以达到多个平台兼容运行的目的。1.2课题的要求1.2.1界面要求:(1)程序运行时,上方应显示记事本三个字,程序中还需显示文件和编辑两个菜单供用户选择。程序窗口可以自由地被用户拉伸,大小也可以改变。(2)用户可以看到自己在文本
3、框内随意编辑的文字内容。(3)用户在点击文件和编辑两个菜单时可以看到二级菜单选项。文件菜单中可看到新建、打开、保存、另存为,编辑菜单中可看到查找、替换。1.2.2程序功能要求:(1)用户可以通过点击新建来开启一个新的输入文本区,并能提醒用户保存上一个编辑的文本。(2)用户在本程序编辑的文本可以做到与Windows中的记事本在换行方面相兼容。(3)可以查找出文本内用户规定的查找对象,并进行替换。1. 3设备与环境硬件:多媒体计算机。软件:java集成开发环境、操作系统。第2草概要设计2.1整个程序的模块结构运行程序首先可以看到文件和和编辑两个菜单选项。点击文件可以看到新建、打开、保存和另存为这四
4、个选项。而点击编辑则会看到查找和替换两个选项。整个程序的模块图2-1所示。记事本文件编辑图2-1整个程序的模块2. 2各个功能的描述2. 2.1新建功能用户可以编辑完一个文本后,建一个新的文本,还能提醒用户保存前一个编辑过的文本,一定程度上可以减少用户误删文档的几率。2. 2.2打开功能打开功能可以让用户在电脑中找到并打开之前编辑过的文本,会弹出文件对话框,用户选择路径找到目标文件,可进行后续编辑操作。2. 2.3保存功能需要判断用户是否是首次保存文本。如果是首次编辑,保存时需选择存储路径。如果是打开并修改已编辑过的文本,此时保存,则会和打开的路径一致,不会有任何对话框弹出。2. 2.4另存为
5、功能另存为功能是让用户选择新的存储路径,与第一次保存相同,只要触发这个功能,保存时都会弹出文件对话框,要求用户需选择存储路径。2. 2.5查找功能查找功能是本课程设计的难点,能找出在查找区域内规定的内容。参照WindoWS下的记事本,需要增加查找方向,区分大小写。进行一次具体的查找流程请见图220图2-2进行一次查找的具体流程3. 2.6替换功能替换功能是基于查找功能,此外还多增加的一个能够替换原文本编辑区域中选定内容的功能。可以帮助用户方便地更换内容。第3章程序功能的实现3.1 主窗口的实现在程序中调用JFrame、JMenuJMenUItem等给程序添加窗口、菜单、菜单选项和实现某些功能需
6、弹出的对话框。实现主窗口的代码如下:finalJFramejf=newJFrame(记事本”);JMenuBarjmb=newJMenUBar();3Menujml=newJMenU(文殍”);3Menujm2=newJMenl(“编獐”);jta=newJTeXtArea();DMenuItemjitll=newJMenuItemjitl2=newJMenuItemjitl3=newJMenuItemjitl4=newJMenuItemjit21=newJMenuItemjit22=newJMenIlltem(扬遂”);JMenuItemC,;JMenuItem(;JMenUItem(另存为
7、);JMenuItem(,t,);JMenUIten(替换);功能代码省略。jml.add(jitll);jml.add(jitl2);jml.add(jitl3);jml.add(jitl4);jm2.add(jit21);jm2.add(jit22);jmb.add(jml);jmb.add(jm2);jf.add(jt);jf.setJMenuBar(jmb);jf.setSize(500j500);jf.SetVisible(true);jf.setDefaultCloseOperation(JFrame.EXITJ)N_CLOSE);关闭窗口。)3.2 各个功能的实现4. 2.1新建
8、的实现实现简单新建功能只要将文本框内容设置为空即可,但是要判断上一个文本是否改动?如果改动,需提示用户保存,并套用第一次保存的方法。新建的代码实现如下:jitll.addActionListener(newActionListener()publicvoidactionPerformed(ActionEvente)Stringstr2=Jt0.getTet();if(strl.equals(str2)文本是否改变?jt.setTet(22)5else提醒用户保存匕个文本。JFramejf2=newJFrame();FileDialogfd=newFileDialog(jf24”请选择保存路径”
9、,FileDialog.S4UF);fd.SetVisible(true);StringfilePath=fd.getDirectory();StringfileName=fd.getFile();fiLepath=filePath+fileName;try此处省略,方法与保存功能相同,只需将写入对象由Strl改为Str2即可。catch(FileNotFoundExceptionel)el.printStackTrace();catch(IOExceptionel)el.printStackTrace();3jt.setTet(2););3.2.2打开的实现实现打开功能,首先需要弹出文件对话
10、框,并且设置为可见,让用户选择.txt文件。先定义一个字节流b,将已经读写进来文本的字节流通过循环传给b,将读出来的东西返回给int型的temp。当读取结束,将所有数组的值以字符串的形式传给给str,并显示。打开的代码实现如下:jitl2.addActIonListener(newActionListenerOpublicvoidactionPerformed(ActionEvente)JFramejfl=newJFrame();FileDialogfd=newFileDialog(jflj”打开FileDialog.LOAD);打开框。fd.SetVisible(true);Stringfi
11、lefPath=fd.getDirectory();StringfileName=fd.getFile();fiLepath=filefPath+fileName;获取绝对路径。tryFileInputStreamfis=newFileInputStream(yitepth);byteb=newbyte1024;定义字节流Stringstr=:;while(true)inttemp=fis.read(b);if(temp=-1)文件已读完break;/跳出循环)str+=newString(b,0,temp);将字节存储的内容以字符串形式传给Str。)strl=str;jt.setText(s
12、tr); catch(FileNotFoundExceptionel)el,printStackTrace(); catch(IOExceptionel)el.printStackTrace(););3.2.3保存的实现实现保存功能,需要考虑考虑两种情况:用ifelse语句判断用户是否是第一次编辑,如果用户是第一次编辑文本时,需要弹出文件对话框,让用户选择保存路径。如果是先打开曾经编辑过的文档,则路径是和打开的路径一致。保存时先建立一个缓存区,将文档转成字符数组的形式后,查找换行符,一旦查找到换行符,便记录到下一行,以便兼容WindOWS的原生记事本,最后写入电脑。保存的代码实现如下:jitl
13、3.addActIonListener(newActionListenerOpublicvoidactionPerformed(ActionEvente)Stringstrl=jt.getText();if(fiLepath=null)判断路径是否为空。JFramejf2=newJFrame();FileDialogfd=newFileDialog(jf2,保存”,FileDialog.SIE);弹出保存对话框。fd,setVisible(true);StringfilePath=fd.getDirectory();StringfileName=fd.getFile();fiLepath=fi
14、lePath+fileName;获取绝对路径。)tryFileWriterfw=newFileWriter(itepth+,.txt);BufferedWriterbw=newBufferedWriter(fw);charch=strl.toCharArray();for(inti=0;i=ch.length-1;i+)if(chi=n)如果遇见换行符则开启新的一行。bw.newLine();continue;)bw.write(chi);写入电脑。)bw.flush();bw.close(); catch(FileNotFoundExceptionel)el.printStackTrace(); catch(IOExceptionel)el.printStackTrace(););3.2.4另存为的实现实现另存为功能,和保存功能类似,但不需要考虑用户是否是第一次编辑,一直让用户选择保存路径。保存时先建立一个缓存区,将文档以字符数组的形式,查找其中的换行符,一旦查找到换行符,便记录到下一行,以便兼容Windows的原生记事本。然后写入电脑。另存为的主要代码实现如下:jitl4.addActionListener(newActionListenerOpublicvoid