java课程设计简单记事本.docx
- 文档编号:8587003
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:17
- 大小:51.65KB
java课程设计简单记事本.docx
《java课程设计简单记事本.docx》由会员分享,可在线阅读,更多相关《java课程设计简单记事本.docx(17页珍藏版)》请在冰豆网上搜索。
java课程设计简单记事本
Java期末测试
制作人:
学号:
2012********
班级:
12级计算机应用技术1班
一、分析与设计
1.分析
现在网络上各种文档编辑器数不胜数,有EmEditor,UEStudio,GridinSoftNotepad,Notepad++,win32pad,SkimEdit,UniRed,xint。
功能也是应有尽有,有能改变字体的,有能改变文字颜色的。
但是,这些软件又存在各种各样的瑕疵或问题:
有的文件体积相对于一般文字编辑来说太大;有的功能太繁杂,使初级使用者一时难以掌握。
仅从日常应用方面来说,一个文本编辑器只需一些简单实用的功能就够了。
本程序设计就是依照这样一种使用需要设计了一个简单的记事本程序。
2.功能模块划分
程序要构建的记事本程序参照了Windows操作系统的记事本工具,其功能有以下几个方面:
第一部分菜单栏
(1)菜单中有“文件”,“编辑”,“格式”三个主菜单。
(2)“文件”有“打开”“保存”“退出”三个子菜单:
分别用于打开文件,保存文件,退出记事本。
(3)“编辑”中有“剪切”“复制”“粘贴”三个子菜单:
用于剪切文字,复制文字,粘贴文字操作。
(4)“格式”中有“自动换行”,“取消自动换行”,“断行不断字”,“取消断行不断字”四个子菜单,分别用于设置是否自动换行等。
设计右键操作,方便用户进行一系列的编辑操作,增强本记事本的用户体验性能。
二、各模块的关键代码
1、菜单栏
文件菜单
mb=newJMenuBar();//创建菜单棒
fileMenu=newJMenu("文件(F)");//创建菜单
fileMenuOpen=newJMenuItem("打开(O)...Ctrl+O");
fileMenuSave=newJMenuItem("保存(S)...Ctrl+S");
fileMenuExit=newJMenuItem("退出");
JMHandlerJM=newJMHandler();//创建监听器
fileMenuOpen.addActionListener(JM);//注册监听器
fileMenuSave.addActionListener(JM);
fileMenuExit.addActionListener(JM);
fileMenu.add(fileMenuOpen);
fileMenu.add(fileMenuSave);
fileMenu.addSeparator();//添加分隔线
fileMenu.add(fileMenuExit);
fileMenu.setFont(f);//设置菜单中文体的字体
编辑菜单
editMenu=newJMenu("编辑(E)");
editMenuCopy=newJMenuItem("复制(C)Ctrl+C");
editMenuCut=newJMenuItem("剪切(T)Ctrl+X");
editMenuPaste=newJMenuItem("粘贴(P)Ctrl+v");
EMHandlerEM=newEMHandler();//创建监听器
editMenuCopy.addActionListener(EM);//注册监听器
editMenuCut.addActionListener(EM);
editMenuPaste.addActionListener(EM);
editMenu.add(editMenuCopy);
editMenu.add(editMenuCut);
editMenu.add(editMenuPaste);
editMenu.setFont(f);
格式菜单
formatMenu=newJMenu("格式(O)");//创建菜单
formatSet=newJMenu("格式设置");//二级菜单
lineWrap=newJMenuItem("自动换行");//二级菜单项
cancleLineWrap=newJMenuItem("取消自动换行");
wrapStyleWord=newJMenuItem("断行不断字");
cancleWrapStyleWord=newJMenuItem("取消断行不断字");
FMHandlerFM=newFMHandler();//创建事件监听器
lineWrap.addActionListener(FM);//注册二级菜单项的监听器
cancleLineWrap.addActionListener(FM);
wrapStyleWord.addActionListener(FM);
cancleWrapStyleWord.addActionListener(FM);
formatSet.add(lineWrap);
formatSet.add(cancleLineWrap);
formatSet.addSeparator();//添加分隔线
formatSet.add(wrapStyleWord);
formatSet.add(cancleWrapStyleWord);
formatMenu.add(formatSet);
formatMenu.setFont(f);
工具栏
toolBar=newJToolBar();//创建工具棒
b1=newJButton(newImageIcon("img/open.gif"));
b2=newJButton(newImageIcon("img/save.gif"));
b3=newJButton(newImageIcon("img/copy.gif"));
b4=newJButton(newImageIcon("img/cut.gif"));
b5=newJButton(newImageIcon("img/paste.gif"));
TBHandlerTB=newTBHandler();//创建按钮监听器
b1.addActionListener(TB);b2.addActionListener(TB);
b3.addActionListener(TB);b4.addActionListener(TB);
b5.addActionListener(TB);
//把按钮全部添加到工具棒中
toolBar.add(b1);toolBar.add(b2);
toolBar.add(b3);toolBar.add(b4);
toolBar.add(b5);
弹出菜单
pm=newJPopupMenu();//创建弹出菜单
item1=newJMenuItem("打开");
item2=newJMenuItem("保存");
item3=newJMenuItem("复制");
item4=newJMenuItem("剪切");
item5=newJMenuItem("粘贴");
JPHandlerJP=newJPHandler();
item1.addActionListener(JP);//注册菜单项的鼠标事件监听器
item2.addActionListener(JP);
item3.addActionListener(JP);
item4.addActionListener(JP);
item5.addActionListener(JP);
editor.addMouseListener(JP);//注册文本区的鼠标事件监听器
pm.add(item1);pm.add(item2);
pm.add(item3);pm.add(item4);
pm.add(item5);
2、自定义类实现文件菜单项的事件处理
privateclassJMHandlerimplementsActionListener
{
publicvoidactionPerformed(ActionEvente)
{
if(e.getSource()==fileMenuOpen){loadFile();}
elseif(e.getSource()==fileMenuSave){saveFile();}
else{System.exit(0);}
}
}
publicvoidloadFile()//打开文件方法
{
JFileChooserfc=newJFileChooser();
intr=fc.showOpenDialog(this);
if(r==JFileChooser.APPROVE_OPTION)
{
Filefile=fc.getSelectedFile();
try{editor.read(newFileReader(file),null);}
catch(IOExceptione){}
}
}
publicvoidsaveFile()//保存文件的方法
{
JFileChooserfc=newJFileChooser();
intr=fc.showSaveDialog(this);
if(r==JFileChooser.APPROVE_OPTION)
{
Filefile=fc.getSelectedFile();
try{editor.write(newFileWriter(file));}
catch(IOExceptione){}
}
}
3、编辑菜单菜单项的事件处理
privateclassEMHandlerimplementsActionListener
{
publicvoidactionPerformed(ActionEvente)
{
if(e.getSource()==editMenuCopy)//实现复制功能
{
editor.copy();
editor.requestFocus();
}
elseif(e.getSource()==editMenuCut)//实现剪切功能
{
editor.cut();
editor.requestFocus();
}
else//实现粘贴功能
{
editor.paste();
editor.requestFocus();
}
}
}
4、自定义类实现弹出式菜单的事件处理
privateclassJPHandlerimplementsActionListener,MouseListener
{
publicvoidactionPerformed(ActionEvente)
{
if(e.getSource()==item1){loadFile();}//实现打开文件功能
elseif(e.getSource()==item2){saveFile();}//实现保存文件功能
elseif(e.getSource()==item3)//文件复制
{
editor.copy();
editor.requestFocus();
}
elseif(e.getSource()==item4)//文件剪切
{
editor.cut();
editor.requestFocus();
}
else//文件粘贴
{
editor.paste();
editor.requestFocus();
}
}
publicvoidmouseReleased(MouseEvente)
{
if(e.isPopupTrigger())//判断是否按下鼠标右键
pm.show(editor,e.getX(),e.getY());//显示弹出式菜单
}
publicvoidmouseClicked(MouseEvente){}
publicvoidmouseEntered(MouseEvente){}
publicvoidmouseExited(MouseEvente){}
publicvoidmousePressed(MouseEvente){}
}
publicstaticvoidmain(String[]args)
{
NodepadN=newNodepad();
}
}
三、运行结果
四、总结
本次实验是自己第一次独立完成一个完整的java小程序的运行,程序运用了抽象窗口工具包、扩充和增强图形包等。
第一次进行程序调试的时候,出现了很多错误,但经过自己的修改,程序终于可以运行了。
通过本次实际操作,让我学到了很多知识,也把平时在课本上学到的知识转化到了实际的运用之中,虽然很辛苦,但很高兴。
五、参考文献
a.黄晓东等编著Java课程设计案例精编(第二版)[M].北京:
中国水利水电出版社,2007
b.李兴华等编著Java开发实战经典Java开发实战经典北京:
清华大学出版社,2009
C.李尊朝苏军Java程序设计(第二版)图形用户界面设计、Swing组件中国铁道出版社,2007
六、附录
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
importjava.io.*;
publicclassNodepadextendsJFrame
{
privateJTextAreaeditor;
privateContainerc;
privateFontf=newFont("sanserif",Font.PLAIN,12);//菜单栏成员属性声明
privateJMenuBarmb;//菜单棒
privateJMenufileMenu;//文件菜单
privateJMenueditMenu;//编辑菜单
privateJMenuformatMenu;//格式菜单
privateJMenuItemfileMenuOpen,fileMenuSave,fileMenuExit;//文件菜单的菜单项
privateJMenuItemeditMenuCopy,editMenuCut,editMenuPaste;//编辑菜单的菜单项
privateJMenuformatSet;//格式菜单第一级菜单
privateJMenuItemlineWrap,cancleLineWrap,wrapStyleWord,cancleWrapStyleWord;//格式菜单的第二级菜单
//工具栏成员属性声明
privateJToolBartoolBar;//工具棒
privateJButtonb1,b2,b3,b4,b5;//声明5个按钮,分别为:
“打开”、“保存”、“复制”、“剪切”、“粘贴”
//弹出式菜单属性声明
privateJPopupMenupm;
privateJMenuItemitem1,item2,item3,item4,item5;
publicNodepad()
{
super("简单记事本");
setSize(400,300);
try{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch(Exceptione){System.err.println("不能被设置外观的原因:
"+e);}
c=getContentPane();//创建一个内容面板
editor=newJTextArea();//创建一个文本区
c.add(newJScrollPane(editor));//设置滚动条,并添加到内容面板
//菜单栏的实现
//文件菜单的实现
mb=newJMenuBar();//创建菜单棒
fileMenu=newJMenu("文件(F)");//创建菜单
fileMenuOpen=newJMenuItem("打开(O)...Ctrl+O");
fileMenuSave=newJMenuItem("保存(S)...Ctrl+S");
fileMenuExit=newJMenuItem("退出");
JMHandlerJM=newJMHandler();//创建监听器
fileMenuOpen.addActionListener(JM);//注册监听器
fileMenuSave.addActionListener(JM);
fileMenuExit.addActionListener(JM);
fileMenu.add(fileMenuOpen);
fileMenu.add(fileMenuSave);
fileMenu.addSeparator();//添加分隔线
fileMenu.add(fileMenuExit);
fileMenu.setFont(f);//设置菜单中文体的字体
//编辑菜单的实现
editMenu=newJMenu("编辑(E)");
editMenuCopy=newJMenuItem("复制(C)Ctrl+C");
editMenuCut=newJMenuItem("剪切(T)Ctrl+X");
editMenuPaste=newJMenuItem("粘贴(P)Ctrl+v");
EMHandlerEM=newEMHandler();//创建监听器
editMenuCopy.addActionListener(EM);//注册监听器
editMenuCut.addActionListener(EM);
editMenuPaste.addActionListener(EM);
editMenu.add(editMenuCopy);
editMenu.add(editMenuCut);
editMenu.add(editMenuPaste);
editMenu.setFont(f);
//格式菜单的实现
formatMenu=newJMenu("格式(O)");//创建菜单
formatSet=newJMenu("格式设置");//二级菜单
lineWrap=newJMenuItem("自动换行");//二级菜单项
cancleLineWrap=newJMenuItem("取消自动换行");
wrapStyleWord=newJMenuItem("断行不断字");
cancleWrapStyleWord=newJMenuItem("取消断行不断字");
FMHandlerFM=newFMHandler();//创建事件监听器
lineWrap.addActionListener(FM);//注册二级菜单项的监听器
cancleLineWrap.addActionListener(FM);
wrapStyleWord.addActionListener(FM);
cancleWrapStyleWord.addActionListener(FM);
formatSet.add(lineWrap);
formatSet.add(cancleLineWrap);
formatSet.addSeparator();//添加分隔线
formatSet.add(wrapStyleWord);
formatSet.add(cancleWrapStyleWord);
formatMenu.add(formatSet);
formatMenu.setFont(f);
//将菜单全部添加菜单棒里
mb.add(fileMenu);
mb.add(editMenu);
mb.add(formatMenu);
//工具栏的实现
//按钮分别为:
“打开”、“保存”、“复制”、“剪切”、“粘贴”
toolBar=newJToolBar();//创建工具棒
b1=newJButton(newImageIcon("img/open.gif"));
b2=newJButton(newImageIcon("img/save.gif"));
b3=newJButton(newImageIcon("img/copy.gif"));
b4=newJButton(newImageIcon("img/cut.gif"));
b5=newJButton(newImageIcon("img/paste.gif"));
TBHandlerTB=newTBHandler();//创建按钮监听器
b1.addActionListener(TB);b2.addActionListener(TB);
b3.addActionListener(TB);b4.addActionListener(TB);
b5.addActionListener(TB);
//把按钮全部添加到工具棒中
toolBar.add(b1);toolBar.add(b2);
toolBar.add(b3);toolBar.add(b4);
toolBar.add(b5);
//弹出菜单的实现
pm=newJPopupMenu();//创建弹出菜单
item1=newJMenuItem("打开");
item2=newJMenuItem("保存");
item3=newJMenuItem("复制");
item4=newJMenuItem("剪切");
item5=newJMenuItem("粘贴");
JPHandlerJP=newJPHandler();
item1.addActionListener(JP);//注册菜单项的鼠标事件监听器
item2.addActionListener(JP);
item3.addActionListener(JP);
item4.addActionListener(JP);
item5.addActionListener(JP);
editor.addMouseListener(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 课程设计 简单 记事本