《Java》课程设计记事本_第1页
《Java》课程设计记事本_第2页
《Java》课程设计记事本_第3页
《Java》课程设计记事本_第4页
《Java》课程设计记事本_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

PAGE30第页《Java课程设计》记事本课程设计报告书目录一、设计课题二、设计目的三、操作环境四、设计场所(机房号、机器号或自己机器)五、设计过程(设计内容及主要程序模块)六、本次设计中用到的课程知识点(列出主要知识点)七、设计过程中遇到的问题及解决办法八、程序清单一、设计课题及内容课题名称:记事本内容:文件菜单中包括新建、打开、保存、另存为、退出等菜单项,其中新建菜单项可以新建一个记事本程序;打开菜单项可以打开一个用户指定的文本文件,并将其内容显示在记事本的文本区域;保存和另存为菜单项可分别实现文件的保存和另存为编辑菜单主要包括复制、剪切和粘贴等菜单项,可分别实现编辑区文本内容的编辑操作帮助菜单主要是现实软件版本等信息记事本还实现了点右键弹出快捷菜单功能,加快文档的编辑效率记事本文本区引入滚动窗格,实现编辑区的滚动查看可自行扩充其功能:比如加入格式菜单设置文本的字体等、编辑菜单中加入查找、替换等菜单项二、设计目的熟悉java.awt,java.math,java.swing等包中的组件。掌握图形界面设计方法。掌握窗体按钮和文本控件对事件的响应。了解java自带的函数方法。三、操作环境操作系统:MicrosoftWindows10CPU:IntelCorei5-8300H2.30GHz内存:8.00GB四、设计场所教室b403五、设计过程(设计内容及主要模块,不少于3000字)设计要求1)界面设计2)功能实现文件菜单:新建、打开、保存、另存为、退出等。(2)其中新建菜单项可以新建一个记事本程序;打开菜单项可以打开一个用户指定的文本文件,并将其内容显示在记事本的文本区域;保存和另存为菜单项可分别实现文件的保存和另存为3)编辑菜单:复制、剪切和粘贴等4)帮助菜单:软件版本信5)右键弹出快捷菜单2.总体设计右键快捷记事本功能模块图:右键快捷记事本格式帮助编辑文件格式帮助编辑文件颜色字体关于记事本粘贴剪切复制退出另存为保存打开新建颜色字体关于记事本粘贴剪切复制退出另存为保存打开新建 图一功能模块图功能描述打开记事本。首先是标准型的记事本,拥有文件、编辑。格式和帮助。如图1所示:图1标准型记事本界面2、在标准型的记事本界面中,进行的新建一个本件名字叫新记事本。如图2图2新建记事本功能用打开文件打开刚刚新建的新记事本。如图三所示。图3—打开文件点击退出即可退出,如图4所示:图4—退出记事本点击帮助可以看到有关记事本的相关信息,其中有作者名、版本、许可条款、隐私声明等必要信息。如图5所示:图5—帮助相关信息6、右键可实现复制、粘贴、剪切、清除等常用功能,方便用户可以快捷方便的使用记事本。如图6所示:图6—右键功能7、编辑也可实现制、粘贴、剪切、清除等常用功能,方便用户选择自己适合的方式,自由选择方便的快捷方式使用。如图7:图7—编辑3.详细设计1)流程图如下:打开程序打开程序新建记事本新建记事本打开记事本打开记事本剪切清除粘贴复制剪切清除粘贴复制完成完成另存为保存另存为保存退出退出相应的Java类有:Notebook类:主类,添加一些记事本需要的的一些方法,对继承类的一些组件进行实体化,为每个按钮创建“这是什么”的帮助信息,按右键的时候触发什么,输出相应的帮助信息,每件事件进行监听,引用的的软件包和部分代码如下:importjava.io.*;importjava.awt.event.*;importjava.awt.*;importjavax.swing.*;importjava.swing.*;//功能:提供一组“轻量级”(所有Java语言)组件,尽可能最大程度地在所有平台上工作。importjavax.swing.JFrame;//功能:构造一个初始时不可见的新窗体。importjavax.swing.JPanel;//功能:创建具有双缓冲和流布局的新JPanel。importjavax.swing.JLabel;//功能:用于短文本字符串或图像或二者的显示区。importjavax.swing.JButton;//功能:创建不带有设置文本或图标的按钮。importjavax.swing.JTextField;//功能:是一个轻量级组件,它允许编辑单行文本。publicclassNotebook{JButtonb_save,b_close;//按钮 JTextAreatextArea;//文本框 FiletempFile;//文件 JPaneljp;//面板JLabelstateBar;//标签 JLabeljl,jj;textArea=newJTextArea();Filef=jfc.getSelectedFile();FileReaderfr=newFileReader(f); fr.read(ch); Stringstr=newString(ch); textArea.setText(str); tempFile=f;Filef=jfc.getSelectedFile(); //如果没有选取文件,下面的jfc.getName(f)将会返回输入的文件名 fname=jfc.getName(f);

}importjava.awt.event.*;//功能:提供处理由AWT组件所激发的各类事件的接口和类。importjava.awt.event.ActionListener;//功能:用于接收操作事件的侦听器接口。importjava.awt.event.KeyListener;//功能://功能:用于接收键盘事件(击键)的侦听器接口importjava.awt.event.MouseMotionListener;//功能:用于接收组件上的鼠标移动事件的侦听器接口。importjava.awt.event.WindowListener;//功能:用于接收窗口事件的侦听器接口。importjava.awt.event.TextListener;//功能:用于接收文本事件的侦听器接口。importjava.awt.event.ItemListener//功能:接收项事件的侦听器接口。 //编辑区鼠标事件,点击右键弹出"编辑"菜单 textArea.addMouseListener(newMouseAdapter() { publicvoidmouseReleased(MouseEvente){ if(e.getButton()==MouseEvent.BUTTON3) popUpMenu.show(e.getComponent(),e.getX(),e.getY()); }//e.getComponent()和textArea具有同等效果 publicvoidmouseClicked(MouseEvente){ if(e.getButton()==MouseEvent.BUTTON1) popUpMenu.setVisible(false); } //为窗口添加"关闭"事件的响应 this.addWindowListener(newWindowAdapter() { publicvoidwindowClosing(WindowEvente) { whenExit(); } });//响应菜单项"新建"的事件 publicvoidactionPerformed(ActionEvente) { if(e.getSource()==f_new) { saveFileDialog(); return; } //响应菜单项"打开"的事件 if(e.getSource()==f_open){ openFileDialog();}//响应菜单项"保存"和"按钮"保存"的事件 if((e.getSource()==b_save)||(e.getSource()==f_save)) { try{ Stringstr=textArea.getText(); FileWriterfw=newFileWriter(tempFile); fw.write(str); fw.close(); //isCurrentFileExists=true; tempFile=tempFile;} catch(Exceptionex){ ex.printStackTrace(); }} //响应菜单"另存为"的事件 if(e.getSource()==f_saveas){ intoption=jfc.showDialog(this,"另存为"); Stringfname=null; if(option==JFileChooser.APPROVE_OPTION) { Filef=jfc.getSelectedFile();//如果没有选取文件,下面的jfc.getName(f)将会返回输入的文件名 fname=jfc.getName(f); if(fname!=null&&fname.trim().length()>0){ if(fname.endsWith(".txt")) ; else{ fname=fname.concat(".txt"); }} if(f.isFile()) fname=f.getName(); f=jfc.getCurrentDirectory(); f=newFile(f.getPath().concat(File.separator).concat(fname)); try{ f.createNewFile(); Stringstr=textArea.getText(); FileWriterfw=newFileWriter(f); fw.write(str); fw.close(); } catch(Exceptionex){ ex.printStackTrace(); }}} //响应"退出"菜单和"退出"按钮的事件 if((e.getSource()==f_close)||(e.getSource()==b_close)){ whenExit(); } if(e.getSource()==e_copy||e.getSource()==je_copy){ copy(); } if(e.getSource()==e_paste||e.getSource()==je_paste){ paste(); } if(e.getSource()==e_cut||e.getSource()==je_cut){ cut(); } if(e.getSource()==e_clear||e.getSource()==je_clear){ clear(); } if(e.getSource()==e_selectAll||e.getSource()==je_selectAll){ selectAll(); }importjava.awt.*;//功能:包含用于创建用户界面和绘制图形图像的所有类。publicinterfaceActiveEvent//功能:知道如何对自身进行指派的事件的接口。publicclassChoice//功能:Choice类表示一个弹出式选择菜单。publicclassColor//功能:用于封装默认sRGB颜色空间中的颜色,或者用于封装由\o"java.awt.color中的类"ColorSpace标识的任意颜色空间中的颜色。publicclassMenu//功能:对象是从菜单栏部署的下拉式菜单组件。publicNotebook() { jfc.addChoosableFileFilter(newFileNameExtensionFilter("文本文件(*.txt)","txt")); jmb=newJMenuBar(); textArea=newJTextArea(); jsp=newJScrollPane(textArea); file=newJMenu("文件"); edit=newJMenu("编辑"); style=newJMenu("格式"); help=newJMenu("帮助"); je_copy=newJMenuItem("复制(C)"); je_paste=newJMenuItem("粘贴(P)"); je_cut=newJMenuItem("剪切(X)"); je_clear=newJMenuItem("清除(D)"); je_selectAll=newJMenuItem("全选(A)"); je_find=newJMenuItem("查找(F)"); je_replace=newJMenuItem("替换(R)"); je_copy.addActionListener(this); //给弹窗式的各组件添加监听器 je_paste.addActionListener(this); je_cut.addActionListener(this); je_clear.addActionListener(this); je_selectAll.addActionListener(this); je_find.addActionListener(this); je_replace.addActionListener(this); //给界面上方的菜单条添加监听器 f_new=newJMenuItem("新建(N)"); f_new.setAccelerator(KeyStroke.getKeyStroke('N',InputEvent.CTRL_MASK,false));//设置带修饰符快捷键 f_new.addActionListener(this); f_open=newJMenuItem("打开(O)"); f_open.setAccelerator(KeyStroke.getKeyStroke('O',InputEvent.CTRL_MASK,false)); f_open.addActionListener(this); f_save=newJMenuItem("保存(S)"); f_save.setAccelerator(KeyStroke.getKeyStroke('S',InputEvent.CTRL_MASK,false)); f_save.addActionListener(this); f_saveas=newJMenuItem("另存为"); f_saveas.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK|InputEvent.SHIFT_MASK)); f_saveas.addActionListener(this); f_close=newJMenuItem("退出(W)"); f_close.setAccelerator(KeyStroke.getKeyStroke('W',InputEvent.CTRL_MASK,false)); f_close.addActionListener(this); e_copy=newJMenuItem("复制(C)"); e_copy.setAccelerator(KeyStroke.getKeyStroke('C',InputEvent.CTRL_MASK,false)); e_copy.addActionListener(this); e_paste=newJMenuItem("粘贴(V)");e_paste.setAccelerator(KeyStroke.getKeyStroke('V',InputEvent.CTRL_MASK,false)); e_paste.addActionListener(this); e_cut=newJMenuItem("剪切(X)"); e_cut.setAccelerator(KeyStroke.getKeyStroke('X',InputEvent.CTRL_MASK,false)); e_cut.addActionListener(this); e_clear=newJMenuItem("清除(D)");e_clear.setAccelerator(KeyStroke.getKeyStroke('D',InputEvent.CTRL_MASK,false)); e_clear.addActionListener(this); e_selectAll=newJMenuItem("全选(A)");e_selectAll.setAccelerator(KeyStroke.getKeyStroke('A',InputEvent.CTRL_MASK,false)); e_selectAll.addActionListener(this); e_find=newJMenuItem("查找(F)"); e_find.setAccelerator(KeyStroke.getKeyStroke('F',InputEvent.CTRL_MASK,false)); e_copy.addActionListener(this); e_replace=newJMenuItem("替换(R)"); e_replace.setAccelerator(KeyStroke.getKeyStroke('R',InputEvent.CTRL_MASK,false)); e_replace.addActionListener(this); s_font=newJMenuItem("字体(T)");s_font.setAccelerator(KeyStroke.getKeyStroke('T',InputEvent.CTRL_MASK,false)); s_font.addActionListener(this); s_color=newJMenuItem("颜色(C)...");s_color.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK|InputEvent.SHIFT_MASK)); s_color.addActionListener(this); h_editor=newJMenuItem("关于记事本");h_editor.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,InputEvent.CTRL_MASK)); h_editor.addActionListener(this); h_help=newJMenuItem("帮助信息(H)");h_help.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_I,InputEvent.CTRL_MASK)); h_help.addActionListener(this); //添加右键弹出式菜单 popUpMenu.add(je_copy); popUpMenu.add(je_paste); popUpMenu.add(je_cut); popUpMenu.add(je_clear); popUpMenu.addSeparator(); popUpMenu.add(je_selectAll); popUpMenu.add(je_find); popUpMenu.add(je_replace);}//创建颜色选择对话框 if(e.getSource()==s_color){ Colorc=JColorChooser.showDialog(this,"请选择文字颜色",Color.cyan); if(c!=null){ textArea.setForeground(c); } else textArea.setForeground(textArea.getForeground()); } JFrame类:被继承类的父类,对代码所用到的所以按键、菜单、文本进行定义。publicclassNotebookextendsJFrameimplementsActionListener,ItemListener{ //组件创建 JButtonb_save,b_close;//按钮 JTextAreatextArea;//文本框 FiletempFile;//文件 JPaneljp;//面板 JMenufile,edit,style,help;//菜单 JMenuItemf_new,f_open,f_save,f_close,f_saveas,e_copy,e_paste,e_cut,e_clear,e_selectAll,e_find,e_replace,s_font,s_color,h_editor,h_help;//菜单条 JMenuBarjmb; JScrollPanejsp;//滚动面板 JPopupMenupopUpMenu=newJPopupMenu();//右键弹出式菜单 JLabelstateBar;//标签 JLabeljl,jj; JFileChooserjfc=newJFileChooser();//文件选择 JMenuItemje_copy,je_paste,je_cut,je_clear,je_selectAll,je_find,je_replace;//弹出式菜单条2)所用的部分图形组件的定义:JMenuBarmenuBar;//菜单条MenueditMenu,viewMenu,helpMenu,time_sys;//菜单:编辑、查看、帮助JMenuItemeditMenu_copy,editMenu_paste;//"编辑"的菜单项JRadioButtonMenuItemviewMenu_standarType; //"查看"的菜单项JMenuItemhelpMenu_helpTopic,helpMenu_aboutCal;//"帮助"的菜单项JTextFielddisplayField;//文本框JButtonbtnBackspace;//按钮JLabellblSystemType;//用作边框的标签JPopupMenupopupMenu;//弹出菜单及菜单项Containerdlgtipscon;//用于显示帮助提示信息的对话框(无边框)3.定义了组件的初始化以及对界面的排版1)对总框架的总体布局对主框架的初始化操作(仅给出标准型的) this.textArea("文本框"); //设置部分菜单项的可见性 jp.setVisible(false); file.setVisible(false); edit.setVisible(false); style.setVisible(false); help.setVisible(false); f_new.setVisible(false); f_open.setVisible(false); f_save.setVisible(false); f_close.setVisible(false); f_saveas.setVisible(false); e_copy.setVisible(false); e_paste.setVisible(false); e_cut.setVisible(false); //设置一些组件的可见性 e_clear.setVisible(false); e_selectAll.setVisible(false); e_find.setVisible(false); e_replace.setVisible(false); s_font.setVisible(false); s_color.setVisible(false); h_editor.setVisible(false); h_help.setVisible(false); jmb.setVisible(false); stateBar.setVisible(false); jl.setVisible(false); jj.setVisible(false); je_copy.setVisible(false); je_paste.setVisible(false); je_cut.setVisible(false); je_clear.setVisible(false); je_selectAll.setVisible(false); je_find.setVisible(false); je_replace.setVisible(false); //设置窗口大小和可见性 this.setSize(260,245); this.setVisible(true); } 3)记事本运算部分程序的执行过程:在该类中,创建监听,响应相应的事件。publicvoidmouseReleased(MouseEvente){ if(e.getButton()==MouseEvent.BUTTON3) popUpMenu.show(e.getComponent(),e.getX(),e.getY());publicvoidmouseClicked(MouseEvente){ if(e.getButton()==MouseEvent.BUTTON1) popUpMenu.setVisible(false);if(stateBar.getText().equals("已保存")||stateBar.getText().equals("新文档")){ returntrue; } else{ returnfalse; } if(m==JFileChooser.APPROVE_OPTION){ Filef=jfc.getSelectedFile(); for(inti=0;i<=f.length();i++){ char[]ch=newchar[i]; try{ FileReaderfr=newFileReader(f); fr.read(ch); Stringstr=newString(ch); textArea.setText(str); tempFile=f; } catch(IOExceptione){ e.printStackTrace(); }}} else return;} if(options==JFileChooser.APPROVE_OPTION) { Filef=jfc.getSelectedFile(); //如果没有选取文件,下面的jfc.getName(f)将会返回输入的文件名 fname=jfc.getName(f); if(fname!=null&&fname.trim().length()>0) { if(fname.endsWith(".txt")); else { fname=fname.concat(".txt"); }if(e.getSource()==f_new) { saveFileDialog(); return; } if(e.getSource()==f_open) { openFileDialog(); } if(e.getSource()==f_saveas) { intoption=jfc.showDialog(this,"另存为"); Stringfname=null; if(option==JFileChooser.APPROVE_OPTION) { Filef=jfc.getSelectedFile();//如果没有选取文件,下面的jfc.getName(f)将会返回输入的文件名 fname=jfc.getName(f); if(fname!=null&&fname.trim().length()>0) { if(fname.endsWith(".txt")) ; else { fname=fname.concat(".txt"); }if(c!=null) { textArea.setForeground(c); } else textArea.setForeground(textArea.getForeground()); } if((e.getSource()==f_close)||(e.getSource()==b_close)){ whenExit(); } if(e.getSource()==e_copy||e.getSource()==je_copy){ copy(); } if(e.getSource()==e_paste||e.getSource()==je_paste){ paste(); } if(e.getSource()==e_cut||e.getSource()==je_cut){ cut(); } if(e.getSource()==e_clear||e.getSource()==je_clear){ clear(); } if(e.getSource()==e_selectAll||e.getSource()==je_selectAll){{ selectAll(); }实现的接口:ActionListener、KeyListener和MouseMotionListener。textArea.addMouseListener(newMouseAdapter(){ publicvoidmouseReleased(MouseEvente){ if(e.getButton()==MouseEvent.BUTTON3) popUpMenu.show(e.getComponent(),e.getX(),e.getY()); }//e.getComponent()和textArea具有同等效果 publicvoidmouseClicked(MouseEvente){ if(e.getButton()==MouseEvent.BUTTON1) popUpMenu.setVisible(false); }});{je_copy.addActionListener(this); //给弹窗式的各组件添加监听器 je_paste.addActionListener(this); je_cut.addActionListener(this); je_clear.addActionListener(this); je_selectAll.addActionListener(this); je_find.addActionListener(this); je_replace.addActionListener(this);}六、设计中用到的课程知识点Java语言程序设计:布局管理器:BorderLayout、GridLayout窗体类:JFrame,JButton,JMenubar,JMenuItem,JMenu,JLabel,JCheckBox,JPopupMenu,JTextField,七、设计中遇到的问题及解决方法忘记一些老师上课讲的细节知识点。翻书找回记忆。右键功能不知道怎么实现,上课老师视乎没有讲过。旁触类通,查找网上资料,右键类似与左键。复制、剪切、粘贴等功能一起使用时不熟悉不顺畅。翻书查资料,上网搜资料。八、程序清单packagetest;importjava.io.File;importjava.io.*;importjava.awt.event.*;importjava.awt.Toolkit;importjava.awt.*;importjavax.swing.*;importjavax.swing.filechooser.*;publicclassNotebookextendsJFrameimplementsActionListener,ItemListener{ //组件创建 JButtonb_save,b_close;//按钮 JTextAreatextArea;//文本框 FiletempFile;//文件 JPaneljp;//面板 JMenufile,edit,style,help;//菜单 JMenuItemf_new,f_open,f_save,f_close,f_saveas,e_copy,e_paste,e_cut,e_clear,e_selectAll,e_find,e_replace,s_font,s_color,h_editor,h_help;//菜单条 JMenuBarjmb; JScrollPanejsp;//滚动面板 JPopupMenupopUpMenu=newJPopupMenu();//右键弹出式菜单 JLabelstateBar;//标签 JLabeljl,jj; JFileChooserjfc=newJFileChooser();//文件选择 JMenuItemje_copy,je_paste,je_cut,je_clear,je_selectAll,je_find,je_replace;//弹出式菜单条 publicNotebook() { jfc.addChoosableFileFilter(newFileNameExtensionFilter("文本文件(*.txt)","txt")); jmb=newJMenuBar(); textArea=newJTextArea(); jsp=newJScrollPane(textArea); file=newJMenu("文件"); edit=newJMenu("编辑"); style=newJMenu("格式"); help=newJMenu("帮助"); je_copy=newJMenuItem("复制(C)"); je_paste=newJMenuItem("粘贴(P)"); je_cut=newJMenuItem("剪切(X)"); je_clear=newJMenuItem("清除(D)"); je_selectAll=newJMenuItem("全选(A)"); je_find=newJMenuItem("查找(F)"); je_replace=newJMenuItem("替换(R)"); je_copy.addActionListener(this); //给弹窗式的各组件添加监听器 je_paste.addActionListener(this); je_cut.addActionListener(this); je_clear.addActionListener(this); je_selectAll.addActionListener(this); je_find.addActionListener(this); je_replace.addActionListener(this); //给界面上方的菜单条添加监听器 f_new=newJMenuItem("新建(N)"); f_new.setAccelerator(KeyStroke.getKeyStroke('N',InputEvent.CTRL_MASK,false));//设置带修饰符快捷键 f_new.addActionListener(this); f_open=newJMenuItem("打开(O)"); f_open.setAccelerator(KeyStroke.getKeyStroke('O',InputEvent.CTRL_MASK,false)); f_open.addActionListener(this); f_save=newJMenuItem("保存(S)"); f_save.setAccelerator(KeyStroke.getKeyStroke('S',InputEvent.CTRL_MASK,false)); f_save.addActionListener(this); f_saveas=newJMenuItem("另存为"); f_saveas.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK|InputEvent.SHIFT_MASK)); f_saveas.addActionListener(this); f_close=newJMenuItem("退出(W)"); f_close.setAccelerator(KeyStroke.getKeyStroke('W',InputEvent.CTRL_MASK,false)); f_close.addActionListener(this); e_copy=newJMenuItem("复制(C)"); e_copy.setAccelerator(KeyStroke.getKeyStroke('C',InputEvent.CTRL_MASK,false)); e_copy.addActionListener(this); e_paste=newJMenuItem("粘贴(V)"); e_paste.setAccelerator(KeyStroke.getKeyStroke('V',InputEvent.CTRL_MASK,false)); e_paste.addActionListener(this); e_cut=newJMenuItem("剪切(X)"); e_cut.setAccelerator(KeyStroke.getKeyStroke('X',InputEvent.CTRL_MASK,false)); e_cut.addActionListener(this); e_clear=newJMenuItem("清除(D)"); e_clear.setAccelerator(KeyStroke.getKeyStroke('D',InputEvent.CTRL_MASK,false)); e_clear.addActionListener(this); e_selectAll=newJMenuItem("全选(A)"); e_selectAll.setAccelerator(KeyStroke.getKeyStroke('A',InputEvent.CTRL_MASK,false)); e_selectAll.addActionListener(this); e_find=newJMenuItem("查找(F)"); e_find.setAccelerator(KeyStroke.getKeyStroke('F',InputEvent.CTRL_MASK,false)); e_copy.addActionListener(this); e_replace=newJMenuItem("替换(R)"); e_replace.setAccelerator(KeyStroke.getKeyStroke('R',InputEvent.CTRL_MASK,false)); e_replace.addActionListener(this); s_font=newJMenuItem("字体(T)"); s_font.setAccelerator(KeyStroke.getKeyStroke('T',InputEvent.CTRL_MASK,false)); s_font.addActionListener(this); s_color=newJMenuItem("颜色(C)..."); s_color.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK|InputEvent.SHIFT_MASK)); s_color.addActionListener(this); h_editor=newJMenuItem("关于记事本"); h_editor.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,InputEvent.CTRL_MASK)); h_editor.addActionListener(this); h_help=newJMenuItem("帮助信息(H)"); h_help.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_I,InputEvent.CTRL_MASK)); h_help.addActionListener(this); //添加右键弹出式菜单 popUpMenu.add(je_copy); popUpMenu.add(je_paste); popUpMenu.add(je_cut); popUpMenu.add(je_clear); popUpMenu.addSeparator(); popUpMenu.add(je_selectAll); popUpMenu.add(je_find); popUpMenu.add(je_replace); //编辑区鼠标事件,点击右键弹出"编辑"菜单 textArea.addMouseListener(newMouseAdapter() { publicvoidmouseReleased(MouseEvente){ if(e.getButton()==MouseEvent.BUTTON3) popUpMenu.show(e.getComponent(),e.getX(),e.getY()); }//e.getComponent()和textArea具有同等效果 publicvoidmouseClicked(MouseEvente){ if(e.getButton()==MouseEvent.BUTTON1) popUpMenu.setVisible(false); } }); this.setJMenuBar(jmb); this.setTitle("记事本程序"); file.add(f_new);//添加文件菜单组件 file.add(f_open); file.addSeparator();//加分隔线 file.add(f_save); file.add(f_saveas); file.addSeparator(); file.add(f_close); edit.add(e_copy);//添加编辑菜单组件 edit.add(e_paste); edit.add(e_cut); edit.add(e_clear); edit.addSeparator(); edit.add(e_selectAll); edit.add(e_find); edit.add(e_replace); style.addSeparator(); style.add(s_font); style.add(s_color); jmb.add(file); //添加格式菜单组件 jmb.add(edit); jmb.add(style); jmb.add(help); help.add(h_editor); //添加帮助菜单组件 help.add(h_help); //textArea.setWrapStyleWord(true);//设置在单词过长的时候是否要把长单词移到下一行。 textArea.setLineWrap(true); //设置在行过长的时候是否要自动换行。 this.add(jsp); //滚动条栏 this.setBounds(500,350,800,600); this.setVisible(true); //为窗口添加"关闭"事件的响应 this.addWindowListener(newWindowAdapter() { publicvoidwindowClosing(WindowEvente) { whenExit(); } }); } publicbooleanisCurrentFileSaved() //判断文件是否被保存 { if(stateBar.getText().equals("已保存")||stateBar.getText().equals("新文档")) { returntrue; } else{ returnfalse; } } publicvoidopenFileDialog()//打开文件 { intm=jfc.showOpenDialog(this); if(m==JFileChooser.APPROVE_OPTION) { Filef=jfc.getSelectedFile(); for(inti=0;i<=f.length();i++) { char[]ch=newchar[i]; try{ FileReaderfr=newFileReader(f); fr.read(ch); Stringstr=newString(ch); textArea.setText(str); tempFile=f; } catch(IOExceptione) { e.printStackTrace(); } } } else return;} publicvoidsaveFileDialog() //保存文件对话框 { intoptions=jfc.showSaveDialog(this); Stringfname=null; if(options==JFileChooser.APPROVE_OPTION) { Filef=jfc.getSelectedFile(); //如果没有选取文件,下面的jfc.getName(f)将会返回输入的文件名 fname=jfc.getName(f); if(fname!=null&&fname.trim().length()>0) { if(fname.endsWith(".txt")); else { fname=fname.concat(".txt"); } } if(f.isFile()) fname=f.getName(); f=jfc.getCurrentDirectory(); f=newFile(f.getPath().concat(File.separator).concat(fname)); try{ f.createNewFile(); Stringstr=textArea.getText(); FileWriterfw=newFileWriter(f); fw.write(str); fw.close(); //isCurrentFileExists=true; tempFile=f; } catch(Exceptione) { e.printStackTrace(); } } } publicvoidcut(){//剪切 textArea.cut(); popUpMenu.setVisible(false); } publicvoidcopy(){//复制 textArea.copy(); popUpMenu.setVisible(false); } publicvoidpaste(){//粘贴 textArea.paste(); popUpMenu.setVisible(false); } publicvoidclear(){//清除 textArea.replaceRange("",textArea.getSelectionStart(),textArea.getSelectionEnd()); popUpMenu.setVisible(false); } publicvoidselectAll(){//全选 textArea.selectAll(); popUpMenu.setVisible(false); } publicvoidwhenExit()//当退出程序时判断文档状态 { dispose(); System.exit(0); } //响应菜单项"新建"的事件 publicvoidactionPerformed(ActionEvente) { if(e.getSource()==f_new) { saveFil

温馨提示

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

评论

0/150

提交评论