




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 问题描述设计一个具有gui界面的记事本,含有简单的文字编辑功能,如:剪切、复制、粘贴、删除;还能实现保存、另存为、设置字体和颜色等功能。这次课程设计由*、*和我三个人合作完成。*主要负责3概要设计和5测试分析。*4.1jm程序界面设计,我负责4. 2jm4类的实现。由于4.3事件处理和撰写程序关系密切,这两项都由*负责。2 需求分析本程序要构建的记事本程序参照了windows操作系统的记事本工具,其功能有以下几个方面:(1)、菜单中有“文件”、“编辑”、“格式”、“帮助”四个主菜单;(2)、“文件”有“新建”、“打开”、“保存”、“另存为”、“退出”分别用于新建文件,打开文件,保存文件,另存文件,退出记事本。(3)、“编辑”中,有“剪切”、“复制”、“粘贴”三个子菜单:用于剪切文字,复制文字,粘贴文字,删除文字。(4)、“格式”中,有“字体”、“颜色”两个子菜单:用于设置文字的字体而和颜色,字体有“宋体”、“楷体”、“黑体”颜色有“红”、“蓝”、“绿”。(5)、“帮助”菜单中有“关于”的子菜单,用于描述记事本程序的相关信息。3 概要设计31自定义类说明3.1.1 类名: jm (1)作用: 主类(2)继承的父类: jframe类 (3)成员变量说明:jmenubar mb=new jmenubar(); /定义一个菜单项 /*定义各个菜单及其菜单项*/ jmenu m1=new jmenu(文件(f); jmenuitem n=new jmenuitem(新建); jmenuitem open=new jmenuitem(打开(o). ctrl+o); jmenuitem save=new jmenuitem(保存(s). ctrl+s); jmenuitem save_as=new jmenuitem(另存为(a).ctrl+a); jmenuitem exit=new jmenuitem(退出); jmenu m2=new jmenu(编辑(e); jmenuitem copy=new jmenuitem(复制(c) ctrl+c); jmenuitem cut=new jmenuitem(剪切(x) ctrl+x); jmenuitem paste=new jmenuitem(粘贴(p) ctrl+p); jmenu m3=new jmenu(格式(o); jmenu f1=new jmenu(字体(f); jmenuitem i11=new jmenuitem(宋体); jmenuitem i12=new jmenuitem(楷体); jmenuitem i13=new jmenuitem(黑体); jmenu color=new jmenu(颜色(c); jmenuitem i21=new jmenuitem(红); jmenuitem i22=new jmenuitem(蓝); jmenuitem i23=new jmenuitem(绿); jmenu m4=new jmenu(帮助(); jmenuitem about=new jmenuitem(关于);/*定义弹出菜单及其菜单项*/ jpopupmenu pm=new jpopupmenu(); jmenuitem item1=new jmenuitem(复制); jmenuitem item2=new jmenuitem(剪切); jmenuitem item3=new jmenuitem(粘贴);/*编辑区*/ string s; container c; jtextarea editor=new jtextarea(s);(4)主要方法说明: jm( )方法创建一个窗口并设置窗口的相应参数,以及把各个项目加到窗上private void addjmenubar( )方法把各个菜单添加到菜单棒上 private void addfilemenu( ) private void addeditmenu( ) private void addformmenu( ) private void addhelpmenu( ) private void addjpopupmenu( )各个方法则把相应的菜单项添加到各自的“文件”、“编辑”、“格式”、“帮助”菜单上,及弹出菜单上3.1.2 类名: jm4(1)作用: 主类(2)继承的父类: jm类 (3)主要成员方法说明:编辑区键盘事件:keylistener类 如果记事本的编辑区内用键盘输入了字符,就能够被程序监听;editor.addkeylistener( new keyadapter()public void keytyped(keyevent e)flag=1;);窗口的事件监听:windowlistener类;class windowlistener extends windowadapter public void windowclosing(windowevent e) if(flag=0)system.exit(0);else close(); 菜单项的事件监听:actionlistener类;public void actionperformed(actionevent e) font f2=editor.getfont(); jmenuitem mi=(jmenuitem) e.getsource(); 32 程序流程图3.2.1主流程图开始结束图3.1主流程图输入文字?新建打开保存另存为复制剪切粘贴字体颜色关于退出ny3.2.2 “文件”菜单操作流程图开始用jfilechooser()选择文件另存的路径用saveflie()保存文件图3.2 “文件”菜单操作流程图结束n新建用loadfile()读取所选的文件内容到记事本“文件”菜单另存为打开用jfilechooser()选择所有打开文件路径退出或关闭文件是否修改用saveflie()保存文件yn用close()关闭文件文件是否修改新文件原文件用close2()选择y保存用savefile()保存文件 3.2.3 “编辑”菜单操作流程图开始“编辑”菜单剪切用editor.cut()实现复制用editor.copy()实现粘贴用editor.paste()实现退出或关闭文件是否修改用savefile()保存文件结束用close()关闭文件yn图3.3 “编辑”菜单操作流程图3.2.4 “格式”菜单操作流程图、用editor.setfont()实现用editor.setforeground()实现宋体绿色用editor.setfont()实现用editor.setfont()实现用editor.setforeground()实现用editor.setforeground()实现开始颜色字体黑体楷体蓝色红色退出或关闭文件是否修改用savaflie()保存文件y结束n用close()关闭文件图3.4 “格式”菜单操作流程图3.2.5 弹出菜单操作流程图开始图3.5弹出菜单操作流程图退出或关闭文件是否修改用saveflie()保存文件y结束n用close()关闭文件mousereleased()监听编辑区的鼠标事件剪切用editor.cut()实现复制用editor.copy()实现粘贴用editor.paste()实现3.2.6 “帮助”菜单操作流程图开始“帮助”菜单关于记事本显示记事本的有关信息结束图3.6 “帮助”菜单操作流程图4 详细设计41 gui程序界面设计import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*; public class jm extends jframe jmenubar mb=new jmenubar(); /定义一个菜单项 /*定义各个菜单及其菜单项*/ jmenu m1=new jmenu(文件(f); jmenuitem n=new jmenuitem(新建); jmenuitem open=new jmenuitem(打开(o). ctrl+o); jmenuitem save=new jmenuitem(保存(s). ctrl+s); jmenuitem save_as=new jmenuitem(另存为(a).ctrl+a); jmenuitem exit=new jmenuitem(退出); jmenu m2=new jmenu(编辑(e); jmenuitem copy=new jmenuitem(复制(c) ctrl+c); jmenuitem cut=new jmenuitem(剪切(x) ctrl+x); jmenuitem paste=new jmenuitem(粘贴(p) ctrl+p); jmenu m3=new jmenu(格式(o); jmenu f1=new jmenu(字体(f); jmenuitem i11=new jmenuitem(宋体); jmenuitem i12=new jmenuitem(楷体); jmenuitem i13=new jmenuitem(黑体); jmenu color=new jmenu(颜色(c); jmenuitem i21=new jmenuitem(红); jmenuitem i22=new jmenuitem(蓝); jmenuitem i23=new jmenuitem(绿); jmenu m4=new jmenu(帮助(); jmenuitem about=new jmenuitem(关于);/*定义弹出菜单及其菜单项*/ jpopupmenu pm=new jpopupmenu(); jmenuitem item1=new jmenuitem(复制); jmenuitem item2=new jmenuitem(剪切); jmenuitem item3=new jmenuitem(粘贴); /*编辑区*/ string s; container c; jtextarea editor=new jtextarea(s); font t=new font(sanserif,font.plain,12); jm() super(记事本); setsize(500,400); tryuimanager.setlookandfeel(uimanager.getsystemlookandfeelclassname(); catch(exception e)system.err.println(不能设置外观的原因;+e); c = getcontentpane(); c.add(new jscrollpane(editor); addfilemenu();addeditmenu();addformmenu();addhelpmenu();addjmenubar();addjpopupmenu(); setjmenubar(mb); setvisible(true);setdefaultcloseoperation(jframe.exit_on_close); private void addfilemenu() m1.add(n); m1.add(open); m1.add(save); m1.add(save_as); m1.addseparator(); m1.add(exit); m1.setfont(t); private void addeditmenu()m2.add(copy); m2.add(cut); m2.addseparator(); m2.add(paste); m2.setfont(t); private void addformmenu()m3.add(f1);m3.add(color);m3.setfont(t); f1.add(i11); f1.add(i12); f1.add(i13);color.add(i21); color.add(i22); color.add(i23);private void addhelpmenu() m4.add(about); m4.setfont(t); private void addjmenubar() mb.add(m1);mb.add(m2);mb.add(m3);mb.add(m4); mb.setbackground(color.cyan);private void addjpopupmenu()editor.add(pm);pm.add(item1);pm.add(item2);pm.add(item3); public static void main(string arg)new jm(); 42 jm4类的实现import java.io.*; import java.awt.*; import javax.swing.*; import java.awt.event.*;import java.awt.font.*;public class jm4 extends jm implements actionlistener,mouselistener/eventlistener int flag=0;public jm4()/*监听器接口*/n.addactionlistener(this);open.addactionlistener(this);save.addactionlistener(this);save_as.addactionlistener(this);exit.addactionlistener(this);copy.addactionlistener(this);cut.addactionlistener(this);paste.addactionlistener(this);i11.addactionlistener(this);i12.addactionlistener(this);i13.addactionlistener(this);i21.addactionlistener(this);i22.addactionlistener(this);i23.addactionlistener(this);about.addactionlistener(this);item1.addactionlistener(this);item2.addactionlistener(this);item3.addactionlistener(this);editor.addmouselistener(this);addwindowlistener(new windowlistener();43 事件处理4.3.1 编辑区键盘事件处理/*编辑区键盘事件*/editor.addkeylistener( new keyadapter()public void keytyped(keyevent e)flag=1;); 4.3.2 窗口事件处理/*窗口监听器*/ class windowlistener extends windowadapter public void windowclosing(windowevent e) if(flag=0)system.exit(0);else close(); 4.3.3 菜单项事件处理/*菜单项监听器*/public void actionperformed(actionevent e) font f2=editor.getfont(); jmenuitem mi=(jmenuitem) e.getsource();if(mi=n) /新建 if(flag=0) editor.settext(); else close2(); if(mi=open) /打开loadfile();if(mi=save|mi=save_as) /保存和另存为 savefile(); if(mi=exit) /退出if(flag=0)system.exit(0); close();if(mi=copy) /复制editor.copy();if(mi=cut) /剪切editor.cut();if(mi=paste) /粘贴editor.paste();if(mi=i11) /字体设置editor.setfont(new java.awt.font(宋体,java.awt.font.plain,f2.getsize(); if(mi=i12)editor.setfont(new java.awt.font(楷体,java.awt.font.plain,f2.getsize(); if(mi=i13)editor.setfont(new java.awt.font(黑体,java.awt.font.plain,f2.getsize(); if(mi=i21) /字体颜色 editor.setforeground(color.red); if(mi=i22) editor.setforeground(color.blue); if(mi=i23) editor.setforeground(color.green); if(mi=about) /帮助菜单的关于 string message = -记事本-+ 由梁娟老师指导,罗世寿、罗军、刘艳共同完成n感谢您的使用!;joptionpane.showmessagedialog(jm4.this, message, 关于.,joptionpane.plain_message); /*弹出菜单*/if(mi=item1) /复制 editor.copy();if(mi=item2) /剪切 editor.cut(); if(mi=item3) /粘贴 editor.paste();4.3.4 编辑区的鼠标事件事件处理/*编辑区的鼠标事件*/public void mousereleased(mouseevent e) if(e.ispopuptrigger() pm.show(editor,e.getx(),e.gety(); public void mouseclicked(mouseevent e)public void mouseentered(mouseevent e)public void mouseexited(mouseevent e)public void mousepressed(mouseevent e) public static void main (string args) jm4 d=new jm4(); 5 测试分析(1)程序运行界面如下:(2)“文件”菜单的菜单项: (3)“编辑”菜单的菜单项:(4)打开文件及另存文件时的界面:由于打开文件和另存文件都要寻找路径,所以开始时界面相同。(5)打开了某一个文本文件是的截图:(6)设置字体为黑体和颜色为蓝色的截图:(7)用弹出菜单实现复制、剪切、粘贴、的截图:(8) 记事本关闭、退出或新建时的截图:当文件发生了剪切、删除、粘贴等操作,或者在编辑区中输入了字符,即文件进行了修改,当点击“文件”菜单中的“退出”项或者点击了窗口的关闭按钮时,就会弹出一个“保存文件?”的对话框。如果文件没有发生修改,关闭或者退出时,直接关闭了记事本程序。由于其他的操作在截图里很难发现什么变化,所以只展示了上面的截图。6 课程设计总结6.1 设计体会6.2 致谢在这次课程设计中,很感谢*老师的指导,将我从对于java肤浅的认识引入到深层次的分析理解。还感谢我们的任课老师*老师,由于她的悉心教导,我能用java这一种语言进行比较熟练的编程。还感谢和我一起做这次课程设计的组员* *,由于我们的通力合作,这次课程设计得以顺利的完成。参考文献1 孙全党,王吴迪,赵枫朝java程序设计应用教程m北京:电子工业出版社,20062 雷之宇java项目开发实践网络篇m北京:中国铁道出版社,20053 赵玉阳java从入门到精通m北京:清华大学出版社,2006 4 李龙怡java编程实例讲解m北京:高等教育出版社,20055 李尊朝,苏军java语言程序设计m北京:中国铁道出版社,2009附录(源程序清单)import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*; public class jm extends jframe jmenubar mb=new jmenubar(); /定义一个菜单项 /*定义各个菜单及其菜单项*/ jmenu m1=new jmenu(文件(f); jmenuitem n=new jmenuitem(新建); jmenuitem open=new jmenuitem(打开(o). ctrl+o); jmenuitem save=new jmenuitem(保存(s). ctrl+s); jmenuitem save_as=new jmenuitem(另存为(a).ctrl+a); jmenuitem exit=new jmenuitem(退出); jmenu m2=new jmenu(编辑(e); jmenuitem copy=new jmenuitem(复制(c) ctrl+c); jmenuitem cut=new jmenuitem(剪切(x) ctrl+x); jmenuitem paste=new jmenuitem(粘贴(p) ctrl+p); jmenu m3=new jmenu(格式(o); jmenu f1=new jmenu(字体(f); jmenuitem i11=new jmenuitem(宋体); jmenuitem i12=new jmenuitem(楷体); jmenuitem i13=new jmenuitem(黑体); jmenu color=new jmenu(颜色(c); jmenuitem i21=new jmenuitem(红); jmenuitem i22=new jmenuitem(蓝); jmenuitem i23=new jmenuitem(绿); jmenu m4=new jmenu(帮助(); jmenuitem about=new jmenuitem(关于);/*定义弹出菜单及其菜单项*/ jpopupmenu pm=new jpopupmenu(); jmenuitem item1=new jmenuitem(复制); jmenuitem item2=new jmenuitem(剪切); jmenuitem item3=new jmenuitem(粘贴); /*编辑区*/ string s; container c; jtextarea editor=new jtextarea(s); font t=new font(sanserif,font.plain,12); jm() super(记事本); setsize(500,400); tryuimanager.setlookandfeel(uimanager.getsystemlookandfeelclassname(); catch(exception e)system.err.println(不能设置外观的原因;+e); c = getcontentpane(); c.add(new jscrollpane(editor); addfilemenu();addeditmenu();addformmenu();addhelpmenu();addjmenubar();addjpopupmenu(); setjmenubar(mb); setvisible(true);setdefaultcloseoperation(jframe.exit_on_close); private void addfilemenu() m1.add(n); m1.add(open); m1.add(save); m1.add(save_as); m1.addseparator(); m1.add(exit); m1.setfont(t); private void addeditmenu()m2.add(copy); m2.add(cut); m2.addseparator(); m2.add(paste); m2.setfont(t); private void addformmenu()m3.add(f1);m3.add(color);m3.setfont(t); f1.add(i11); f1.add(i12); f1.add(i13);color.add(i21); color.add(i22); color.add(i23);private void addhelpmenu() m4.add(about); m4.setfont(t); private void addjmenubar() mb.add(m1);mb.add(m2);mb.add(m3);mb.add(m4); mb.setbackground(color.cyan);private void addjpopupmenu()editor.add(pm);pm.add(item1);pm.add(item2);pm.add(item3); public static void main(string arg)new jm(); import java.io.*;import java.awt.*;import javax.swing.*;import java.awt.event.*;import java.awt.font.*;public class jm4 extends jm implements actionlistener,mouselistener int flag=0;public jm4()/*监听器接口*/n.addactionlistener(this);open.addactionlistener(this);save.addactionlistener(this);save_as.addactionlistener(this);exit.addactionlistener(this);copy.addactionlistener(this);cut.addactionlistener(this);paste.addactionlistener(this);i11.addactionlistener(this);i12.addactionlistener(this);i13.addactionlistener(this);i21.addactionlistener(this);i22.addactionlistener(this);i23.addactionlistener(this);about.addactionlistener(this);item1.addactionlistener(this);item2.addactionlistener(this);item3.addactionlistener(this);editor.addmouselistener(this);addwindowlistener(new windowlistener();/*编辑区键盘事件*/editor.addkeylistener( new keyadapter()public void keytyped(keyevent e)flag=1;); /*窗口监听器*/ class windowlistener extends windowadapter public void windowclosing(windowevent e) if(flag=0)system.exit(0);else close(); /*菜单项监听器*/public void actionperformed(actionevent e) font f2=editor.getfont(); jmenuitem mi=(jmenuitem) e.getsource();if(mi=n) /新建 if(flag=0) editor.settext(); else close2(); if(mi=open) /打开loadfile();if(mi=save|mi=save_as) /保存和另存为 savefile(); if(mi=exit) /退出if(flag=0)system.exit(0); close();if(mi=copy) /复制editor.copy();if(mi=cut) /剪切editor.cut();if(mi=paste) /粘贴editor.paste();if(mi=i11) /字体设置editor.setfont(new java.awt.font(宋体,java.awt.font.plain,f2.getsize(); if(mi=i12)editor.setfont(new java.awt.font(楷体,java.awt.font.plain,f2.getsize(); if(mi=i13)editor.setfont(new java.awt.font(黑体,java.awt.font.plain,f2.getsize(); if(mi=i21) /字体颜色 editor.setforeground(color.red); if(mi=i22) editor.setforeground(color.blue); if(mi=i23) editor.setforeground(color.green); if(mi=about) /帮助菜单的关于 string message = -记事本-+ 由梁娟老师指导,罗世寿、罗军、刘艳共同完成n感谢您的使用!;joptionpane.showmessagedialog(jm4.this, message, 关于.,joptionpane.plain_message); /*弹出菜单*/if(mi=item1) /复制 editor.copy();if(mi=item2) /剪切 editor.cut(); if(mi=item3) /粘贴 editor.paste();/*将文件读入到编辑区*/vo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版国有企业劳务派遣员工服务协议
- 2025房地产项目居间合同范本:可持续发展地产项目合作
- 2025电商代运营年度供应链管理服务合同范本
- 2025版钢构工程安装与绿色环保验收合同协议
- 2025版专业清洁公司劳务分包安全合作协议书
- 二零二五版深基坑定向钻施工与支护设计合同
- 2025版大学生创新创业项目投资合作协议
- 2025版二手商铺租赁合同租赁双方权利义务说明书
- 2025范本模板:内部股东退出及环境保护责任合同
- 2025版企业单位食堂外包服务托管合同协议书
- 双块式无砟轨道施工工艺及质量控制
- 管理会计知识点整理
- 导管相关血流感染的治疗
- 工程进度款支付申请书
- 我国常见的草坪草
- 后腹腔镜下肾囊肿去顶减压术ppt课件
- 火力发电厂除灰设计规程
- 商品混凝土企业管理ppt课件
- 球阀自动泄压计算
- 学校食堂登记表(10个表)全
- 佐罗塔耶夫《儿童组曲NO.1》的演奏分析
评论
0/150
提交评论