1、记事本程序全版记事本程序的设计与实现一、设计分析1.1系统概述记事本主要是对文字进行编辑处理的软件。能进行新建、打开、保存等功能;并且能运用剪贴、复制、粘贴、清除功能,对文字更方便的录入。另外还可以根据用户的需要查找相应的文字,实现编辑功能。1.2系统运行环境 操作系统:Windows XP 开发语言: JAVA 开发工具:JCreatorPro1.3功能需求描述由于记事本是一套简单的文本编辑器。要求记事本不但要具备完善的编辑、方便的性能,还要提供更简便的操作。这就要求设计人员在编辑过程当中尽可能的考虑到。包括以下内容:1、对文本进行编辑; 2、用户根据不同的权限可对文本进行添加、删除、修改等
2、操作; 3、对记事本进行各种编辑(精确、简单); 二、总体设计 记事本采用现有的编辑,简单的记事本编辑器,充分利用大家现有的编辑,减少大家的时间,提高大家对记事本的熟练。记事本就具备编辑功能,可以及时根据大家需求进行新建、保存操作。 记事本筐架图2-1三、系统的实现3.1主界面包括文件、编辑、查找、帮助操作界面子目录包括 复制、粘贴、新建、查找等,如图3-1显示。图3-1.1图3-1.2图3-1.3图3-1.43.1完成图3-1程序代码如下import java.awt.*;import java.awt.event.*;import java.io.*;import java.awt.dat
3、atransfer.*;class MyMenuBar extends MenuBar public MyMenuBar(Frame parent) parent.setMenuBar(this); public void addMenus(String menus) for(int i=0;imenus.length;i+) add(new Menu(menusi); public void addMenuItems(int menuNumber,String items) for(int i=0;iitems.length;i+) if(itemsi!=null) getMenu(menu
4、Number).add(new MenuItem(itemsi); else getMenu(menuNumber).addSeparator(); public void addActionListener(ActionListener al) for(int i=0;igetMenuCount();i+) for(int j=0;jgetMenu(i).getItemCount();j+) getMenu(i).getItem(j).addActionListener(al); class MyFile private FileDialog fDlg; public MyFile(Fram
5、e parent) fDlg=new FileDialog(parent,FileDialog.LOAD); private String getPath() return fDlg.getDirectory()+fDlg.getFile(); public String getData() throws IOException fDlg.setTitle(打开); fDlg.setMode(FileDialog.LOAD); fDlg.setVisible(true); BufferedReader br=new BufferedReader(new FileReader(getPath()
6、; StringBuffer sb=new StringBuffer(); String aline; while(aline=br.readLine()!=null) sb.append(aline+n); br.close(); return sb.toString(); public void setData(String data) throws IOException fDlg.setTitle(保存); fDlg.setMode(FileDialog.SAVE); fDlg.setVisible(true); BufferedWriter bw=new BufferedWriter
7、(new FileWriter(getPath(); bw.write(data); bw.close(); class MyClipboard private Clipboard cb; public MyClipboard() cb=Toolkit.getDefaultToolkit().getSystemClipboard(); public void setData(String data) cb.setContents(new StringSelection(data),null); public String getData() Transferable content=cb.ge
8、tContents(null); try return (String) content.getTransferData(DataFlavor.stringFlavor); /DataFlavor.stringFlavor会将剪贴板中的字符串转换成Unicode码形式的String对象。 /DataFlavor类是与存储在剪贴板上的数据的形式有关的类。 catch(Exception ue) return null; class MyFindDialog extends Dialog implements ActionListener private Label lFind=new Label
9、(查找字符串); private Label lReplace=new Label(替换字符串); private TextField tFind=new TextField(10); private TextField tReplace=new TextField(10); private Button bFind=new Button(查找); private Button bReplace=new Button(替换); private TextArea ta; public MyFindDialog(Frame owner,TextArea ta) super(owner,查找,fal
10、se); this.ta=ta; setLayout(null); lFind.setBounds(10,30,80,20); lReplace.setBounds(10,70,80,20); tFind.setBounds(90,30,90,20); tReplace.setBounds(90,70,90,20); bFind.setBounds(190,30,80,20); bReplace.setBounds(190,70,80,20); add(lFind); add(tFind); add(bFind); add(lReplace); add(tReplace); add(bRepl
11、ace); setResizable(false); bFind.addActionListener(this); bReplace.addActionListener(this); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) MyFindDialog.this.dispose(); ); /构造函数结束 public void showFind() setTitle(查找); setSize(280,60); setVisible(true); public void showR
12、eplace() setTitle(查找替换); setSize(280,110); setVisible(true); private void find() String text=ta.getText(); String str=tFind.getText(); int end=text.length(); int len=str.length(); int start=ta.getSelectionEnd(); if(start=end) start=0; for(;start=end-len;start+) if(text.substring(start,start+len).equ
13、als(str) ta.setSelectionStart(start); ta.setSelectionEnd(start+len); return; /若找不到待查字符串,则将光标置于末尾 ta.setSelectionStart(end); ta.setSelectionEnd(end); public Button getBFind() return bFind; private void replace() String str=tReplace.getText(); if(ta.getSelectedText().equals(tFind.getText() ta.replaceR
14、ange(str,ta.getSelectionStart(),ta.getSelectionEnd(); else find(); public void actionPerformed(ActionEvent e) if(e.getSource()=bFind) find(); else if(e.getSource()=bReplace) replace(); class MyMemo extends Frame implements ActionListener private TextArea editor=new TextArea(); /可编辑的TextArea private
15、MyFile mf=new MyFile(this);/MyFile对象 private MyClipboard cb=new MyClipboard(); private MyFindDialog findDlg=new MyFindDialog(this,editor); public MyMemo(String title) /构造函数 super(title); MyMenuBar mb=new MyMenuBar(this); /添加需要的菜单及菜单项 mb.addMenus(new String文件,编辑,查找,帮助); mb.addMenuItems(0,new String新建
16、,打开,保存,null,全选); mb.addMenuItems(1,new String剪贴,复制,粘贴,清除,null,全选); mb.addMenuItems(2,new String查找,null,查找替换); mb.addMenuItems(3,new String我的记事本信息); add(editor); /为菜单项注册动作时间监听器 mb.addActionListener(this); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) MyMemo.this.dispo
17、se(); ); /分号不能忘了 /构造函数完 public void actionPerformed(ActionEvent e) String selected=e.getActionCommand(); /获取菜单项标题 if(selected.equals(新建) editor.setText(); else if(selected.equals(打开) try editor.setText(mf.getData(); catch(IOException ie) else if(selected.equals(保存) try mf.setData(editor.getText(); c
18、atch(IOException ie) else if(selected.equals(退出) dispose(); else if(selected.equals(剪贴) /将选中的字符串复制到剪贴板中并清除字符串 cb.setData(editor.getSelectedText(); editor.replaceRange(,editor.getSelectionStart(),editor.getSelectionEnd(); else if(selected.equals(复制) cb.setData(editor.getSelectedText(); else if(select
19、ed.equals(粘贴) String str=cb.getData(); editor.replaceRange(str,editor.getSelectionStart(),editor.getSelectionEnd(); /粘贴在光标位置 else if(selected.equals(清除) editor.replaceRange(,editor.getSelectionStart(),editor.getSelectionEnd(); else if(selected.equals(全选) editor.setSelectionStart(0); editor.setSelect
20、ionEnd(editor.getText().length(); else if(selected.equals(查找) findDlg.showFind(); else if(selected.equals(查找替换) findDlg.showReplace(); public static void main(String args) MyMemo memo=new MyMemo(记事本); memo.setSize(650,450); memo.setVisible(true);四、操作方法与试验结果4.1 操作方法 将需的文字录入该文本框,然后进行该程序的功能测试,以我住在麦子里为例
21、。我们要实现文本框的查找功能。如查找文中的“大地”,将鼠标移动到查找后单击,然后输入“大地”。图4-1.14.2复制粘贴功能选中复制内容,点击复制,然后在需要的位置点击粘贴。图4-1.24.3实验结果输入要查找的内容之后,点击“查找”,程序就能找出文中包含“大地”的这句。并将其置于页顶。实现了文字的查找功能。对于所复制的内容将光标移动到相应的位置,然后点击粘贴,之后就实现了文字的复制粘贴功能。五、设计体会通过设计记事本小程序,了解了实现该类型程序的方法,掌握了需要用到的代码、类、算法等。有些小问题还是没有掌握,比如查找文字的时候怎样使文字的状态是选中的。这个程序还有许多需要改进的地方,比如快捷键的设置,子菜单的分隔等等。我将在今后的学习过程中尽量完善自己的编程水平,使自己能够尽快的适应社会工作的需要,以求做到最好。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1