java记事本课程报告.doc_第1页
java记事本课程报告.doc_第2页
java记事本课程报告.doc_第3页
java记事本课程报告.doc_第4页
java记事本课程报告.doc_第5页
免费预览已结束,剩余14页可下载查看

下载本文档

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

文档简介

记事本一、需求分析本次所设计的记事本主要是仿windows自带的记事本,实现了对文本文档编辑和操作的需求,记事本窗体顶部是菜单栏,分文件、编辑、格式、帮助四栏,文件栏里有新建、打开、保存、另存为、退出五项,编辑栏里有撤消、剪贴、复制、粘贴、全选、删除、时间/日期、颜色八项,格式栏里有自动换行、字体两项,帮助栏里有关于记事本,点击时出现对话框显示记事本的相关信息。鼠标右键有弹出式菜单,还要有快捷方式(如:保存Ctrl+S),方便编辑操作。二、概要设计1 程序设计思路在程序中,设计了一个菜单栏和一个文本区,设计过程中用到了JScrollPane,JMenu,JTextPane,JFileChooser,JColorChooser等。JMenu用来制作菜单,菜单包括文件、编辑、格式、帮助四项。JTextPane主要用来输入文本,JFileChooser 是保存和打开文件是用的文件选择器,JColorChooser是对文本颜色和文字颜色设置时用的调色板。2 设计模块图 Notepad的构造方法组件初始化容器事件监听器菜单栏文本区文件编辑格式帮助自动换行字体关于记事本新建打开保存另存为退出撤消剪贴 复制粘贴全选删除时间日期 颜色文本颜色文字颜色弹出式菜单快捷方式 图1 设计模块图三、运行环境、开发语言 Windows系统,java虚拟机,java语言。四、详细设计1 程序清单程序中有几个功能是写在方法里面,具体如表1所示表1 程序清单文件名功能 Notepad.java新建、打开、保存文件,对文件的修改对文件内容进行基本的编辑操作,内容格式修改注册鼠标事件,有弹出式窗口,有快捷方式对记事本基本信息的介绍对于各功能的具体实现,大部分是直接在事件监听器里实现,详细过程请看下面的主要代码部分。2 主要代码2.1新建文件 为新建注册监听器,新建文件时,标题会换成“新建文本-记事本”,文本区会置空,如图2所示。 图2 新建窗口miNew.addActionListener(new ActionListener()Override public void actionPerformed(ActionEvent e)if(content.equals(textArea.getText()textArea.setText();elseint value=JOptionPane.showConfirmDialog(null,是否保存所做修改,提示,JOptionPane.YES_OPTION);if(value=JOptionPane.YES_OPTION)if(file=null) jfc.showSaveDialog(null); file=jfc.getSelectedFile(); String text=textArea.getText();trysaveFile(file,text);textArea.setText();catch(IOException ex)else if(value=JOptionPane.NO_OPTION)textArea.setText(); jf.setTitle(新建文本 - 记事本); );2.2打开文件 为打开注册监听器,打开文件时,会出现打开文件选择器,选择文件后,将文件内容输出到文本区,同时标题改为“文件名-记事本”,如图3所示。 图3 打开文件的文件选择器miOpen.addActionListener(new ActionListener()Override public void actionPerformed(ActionEvent e)jfc.showOpenDialog(null);file=jfc.getSelectedFile();if(file=null)textArea.setText(没有选择文件);return; textArea.setText();tryString content=getFileContent(file);textArea.setText(content); jf.setTitle(file.getName()+ - 记事本);catch(IOException ex);2.3保存文件 为保存注册监听器,保存文件时,如果文件已经存在,直接保存,如果是新建的文件,弹出保存对话框,自己输入文件名保存,如图4所示。 图4 保存文件的文件选择器miSave.addActionListener(new ActionListener()Override public void actionPerformed(ActionEvent e) if(file=null)int flag=jfc.showSaveDialog(null); if(flag=JFileChooser.APPROVE_OPTION) file=jfc.getSelectedFile(); newfile=new File(file.toString()+.txt); String text=textArea.getText(); try saveFile(newfile,text); textArea.setText(); catch(Exception ex) );2.4撤消、剪贴、复制、粘贴、删除、全选的实现 为编辑菜单中的各项注册监听器,编辑中撤消、剪贴、复制、粘贴、全选直接调用自带方法,删除是把我文本区内容全删除即置空,如图5所示。 图5 文件编辑的窗口textArea.getDocument().addUndoableEditListener(new UndoableEditListener() public void undoableEditHappened(UndoableEditEvent e) undoManager.addEdit(e.getEdit(); miUndo.setEnabled(undoManager.canUndo();/设置撤消可用 );/*-当撤消管理器判断可用时,在注册撤消监听器-*/ miUndo.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) try undoManager.undo(); /开始实现撤消 catch (CannotRedoException cre) cre.printStackTrace(); );miCut.addActionListener(new ActionListener()Override public void actionPerformed(ActionEvent e) textArea.cut(); /剪贴);miCopy.addActionListener(new ActionListener() Override public void actionPerformed(ActionEvent e) textArea.copy(); /复制);miPaste.addActionListener(new ActionListener() Override public void actionPerformed(ActionEvent e) textArea.paste(); /粘贴); miDelete.addActionListener(new ActionListener() Override public void actionPerformed(ActionEvent e) textArea.setText(););miSelect.addActionListener(new ActionListener() Override public void actionPerformed(ActionEvent e) textArea.selectAll(); /全选);2.5时间/日期的实现 为时间/日期注册监听器,时间/日期是直接获取系统时间和日期,然后转化成自己想要的格式,如图6所示。 图6 时间/日期的显示miDate.addActionListener(new ActionListener() Override public void actionPerformed(ActionEvent e) SimpleDateFormat formatter = new SimpleDateFormat (yyyy年MM月dd日 EE hh:mm:ss);/设置日期显示格式Date date = new Date();textArea.append(formatter.format(date);/在文本区中追加日期);2.6颜色的实现 注册颜色监听器,颜色设置时,调用系统自带调色板,如图7所示。 图7 颜色选择器backColor.addActionListener(new ActionListener() Override public void actionPerformed(ActionEvent e) Color colorselected=JColorChooser.showDialog(null,选择背景颜色,textArea.getForeground(); if(colorselected!=null) textArea.setBackground(colorselected); ); fontColor.addActionListener(new ActionListener()Override public void actionPerformed(ActionEvent e) Color colorselected=JColorChooser.showDialog(null,选择字体颜色,textArea.getForeground(); if(colorselected!=null) textArea.setForeground(colorselected); );2.7鼠标事件 注册鼠标事件,单击鼠标右键出现弹出式菜单,如图8所示。 图8 鼠标右键菜单textArea.addMouseListener(new MouseAdapter()public void mouseReleased(MouseEvent e)/鼠标按钮在组件上释放时调用popup(e);public void mousePressed(MouseEvent e)/鼠标按键在组件上按下时调用popup(e);private void popup(MouseEvent e)if(e.isPopupTrigger()/此鼠标事件是否为弹出菜单的触发事件pm.show(e.getComponent(),e.getX(),e.getY(););2.8字体修改的实现为字体注册监听器,字体设置时,新设置了一JFrame窗口,里面三个组合框,字体的种类是调用系统字体,而字形、字号是自己添加的字符串数组,窗口下面有“确定”和“取消”按钮,如图所9示。图9 字体设置窗口 miFont.addActionListener(new ActionListener()Override public void actionPerformed(ActionEvent e) final JFrame fontSet= new JFrame(字体设置.); fontSet.setLocation(100, 200); jf.setEnabled(false); /主窗体不可用 GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment(); final JComboBox jc= new JComboBox(ge.getAvailableFontFamilyNames(); /获取系统字体,并把字体列表放入组合框JComboBox中 jc.setLocation(30, 80); Container c =fontSet.getContentPane(); JPanel jp = new JPanel(); jp.add(jc,new FlowLayout(); String formString=正常,粗体,斜体,粗斜体; String sizeString=初号,小初,一号,小一,二号,小二, 三号,小三,四号,小四,五号,小五,六号,小六,七号, 八号,10,11,12,14,16,18,20,22,24, 26,28,36,48,72; /定义字形和字号的字符串 final JComboBox fontForm=new JComboBox(formString); final JComboBox fontSize=new JComboBox(sizeString); final JButton sure=new JButton(确定); final JButton cancel=new JButton(取消); jp.add(fontForm); jp.add(fontSize); jp.add(sure); jp.add(cancel); c.add(jp); sure.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) /根据指定名称、样式和大小,创建一个新Font textArea.setFont(new Font(jc.getActionCommand(), fontForm.getSelectedIndex(),fontSize.getSelectedIndex(); jf.setEnabled(true); fontSet.dispose(); /释放该窗体 ); cancel.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) jf.setEnabled(true); fontSet.dispose(); ); fontSet.setSize(350, 100); fontSet.setVisible(true); fontSet.setResizable(false);/禁止放大窗体 jf.setEnabled(true); /主窗体可用 );2.9 退出和关闭文件时调用的方法 退出和关闭文件注册监听器,调用jframeclose()方法,如果文件已做修改或新建文件写入有内容未保存时弹出提示对话框,点击“是”回到保存操作,点击“否”直接关闭不保存,点击“取消”不关闭,回到文件窗体,如图10所示。图10 关闭提示窗private void jframeClose() if(content.equals(textArea.getText()System.exit(0); elseint value=JOptionPane.showConfirmDialog(null,是否保存所做修改,提示,JOptionPane.YES_NO_CANCEL_OPTION); if(value=JOptionPane.YES_OPTION) if(file=null) jfc.showSaveDialog(null); file=jfc.getSelectedFile(); String text=textArea.getText();try saveFile(file,text);System.exit(0);catch(IOException ex) else if(value=JOptionPane.NO_OPTION)System.exit(0);else if(value=JOptionPane.CANCEL_OPTION) 2.10读取文件的方法private static String getFileContent(File file) throws IOExceptioncontent=;FileReader fileReader=new FileReader(file);BufferedReader reader=new BufferedReader(fileReader);String str=;while(str=reader.readLine()!=null) /readLine()方法不接受换行符 content+=str+n; /要加上换行符reader.close();return content;2.11保存文件的方法private static void saveFile(File file,String str) throws IOExceptionBufferedWriter bufferedWriter=new BufferedWriter(new FileWriter(file); String s=str.replaceAll(n,System.getProperty(line.separator); /将换行符转换为系统默认的换行符bufferedWriter.write(s);bufferedWriter.flush();bufferedWriter.close();五、调试与分析1.最开始设计窗体时,没有使用JScrollPane,后来在读大文件时,发现没有上下滚动条,读文件很不方便,超出文本区的内容需自己改变窗口大小来读。加上JScrollPane面板后,上下左右都有滚动条很方便。2.当写完文件后,点保存菜单项,弹出文件选择器,这时如果自己又想修改文件,点“取消”会出现异常如图11所示,这里没有判断“确定”和“取消”该怎么执行。3.新建文件时,对于文本区的内容已经保存而没有做修改,还会弹出是否保存文件的对话框,这样就不太好,新建时应先判断文本去的内容是否保存,已经保存不弹窗口,没有保存才提示是否保存。 图11 调试窗口六、功能测试1新建一个文件,输入内容,然后保存文件,如图12所示。图12 新建和保存2.对编辑菜单中剪贴、复制、粘贴、全选的测试,如图13所示图13 编辑的基本操作3.测试对文字的字体、字形、字号进行设置,如图14所示。图14 字体设置显示效果4.对文本背景颜色和文字颜色的设置,及时间/日期的显示格式,如图1

温馨提示

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

评论

0/150

提交评论