java记事本课程设计教学文案.docx

上传人:b****5 文档编号:5692127 上传时间:2022-12-31 格式:DOCX 页数:20 大小:232.42KB
下载 相关 举报
java记事本课程设计教学文案.docx_第1页
第1页 / 共20页
java记事本课程设计教学文案.docx_第2页
第2页 / 共20页
java记事本课程设计教学文案.docx_第3页
第3页 / 共20页
java记事本课程设计教学文案.docx_第4页
第4页 / 共20页
java记事本课程设计教学文案.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

java记事本课程设计教学文案.docx

《java记事本课程设计教学文案.docx》由会员分享,可在线阅读,更多相关《java记事本课程设计教学文案.docx(20页珍藏版)》请在冰豆网上搜索。

java记事本课程设计教学文案.docx

java记事本课程设计教学文案

 

java记事本课程设计

课程设计(大作业)报告

 

课程名称:

面向对象程序设计

设计题目:

记事本

院系:

信息系计算机科学与技术专业

班级:

设计者:

学号:

指导教师:

设计时间:

2012.12.24——2012.12.28

 

信息技术学院

昆明学院课程设计(大作业)任务书

姓名:

院(系):

信息学院

专业:

计算机科学与技术学号:

任务起止日期:

2012.12.24——2012.12.28

课程设计题目:

设计一个具有GUI界面的记事本,含有简单的文字编辑功能,如:

剪切、复制、粘贴、删除;还能实现保存、另存为、查找、替换等功能。

课程设计要求:

1.开始设计前先回顾以前所学的内容,明确本课程设计所要用到的技术点并到网上搜索以及查阅相关的书籍来搜集资料。

2.通过编写一个基于JAVA的应用系统综合实例,熟练掌握Java语言设计一个完整的应用程序的设计方法和步骤(软件的分析、设计、调试和总结)。

3.在规定时间内,在相关软、硬件的环境下,由指导老师指导独立完成各阶段设计任务。

4.设计一个记事本,能够进行输入文字操作,并具有新建文件,打开文件,保存文件,退出,复制,粘贴,剪切,查找替换等功能。

可扩展功能。

 

工作计划及安排:

明确选题,查阅相关资料——1天

题目分析、总体设计、编写代码——2天

自定义类说明,程序流程图,详细设计,事件处理

调试测试、总结,撰写课程设计报告——1天

测试分析

修改、完善课程设计报告——1天

设计体会

 

指导教师签字

年月日

课程设计(大作业)成绩

学号:

姓名:

指导教师:

课程设计题目:

设计一个具有GUI界面的记事本

总结:

在经过了将近一周的Java课程的学习之后,对于Java这门优秀的编程语言有了更深层次的认识。

在学习的过程中,通过老师的教学指导、课外对相关知识的阅读和上机实际操作,对于它所具有的面向对象、与平台无关、安全、稳定和多线程等特点,有了更深刻更直观的认识和理解。

从选择课程设计的题目开始,到需求分析,开发工具的选择,最终到系统的设计思路,关键代码的设计,每一步都认真思考分析完成。

有点遗憾的是,起初在设计时原本打算能更加完善一些功能的设计,但因为确实有难度就此作罢。

在以后的学习中,我会进一步加深对于JAVA的理解和使用,通过阅读相关知识拓宽自己对于JAVA的了解。

 

指导教师评语:

 

成绩:

 

填表时间:

指导教师签名:

课程设计(大作业)报告

一、题目分析

本程序要构建的记事本程序参照了Windows操作系统的记事本工具,其功能有以下几个方面:

(1)、菜单中有“文件”、“编辑”、“帮助”三个主菜单;

(2)、“文件”有“新建”、“打开”、“保存”、“另存为”、“退出”分别用于新建文件,打开文件,保存文件,另存文件,退出记事本。

(3)、“编辑”中,有“剪切”、“复制”、“粘贴”、“删除”、“查找”、“替换”、“全选”七个子菜单:

用于剪切文字,复制文字,粘贴文字,删除文字,查找文件中的指定的字符串,替换文件中的指定的字符串,选定整个文件。

(4)“帮助”菜单中有“关于”的子菜单,用于描述记事本程序的相关信息。

 

二、总体设计

2.1自定义类说明

2.1.1类名:

jishiben

(1)作用:

主类

(2)继承的父类:

JFrame类

(3)实现的接口:

windowListener类与actionListener类

(4)成员变量说明:

Filefile=null;//定义一个空文件

privateJLabelstateBar;//定义一个标签

privateJTextAreatext;//定义编辑区

privateJMenuBarmb;//定义菜单栏

privateJMenufiles,edit,help;//定义菜单

privateJMenuItem

Open,New,Save,SaveAs,Exit,Cut,Copy,Paste,Delete,Find,Replace,SelectAll,About;//定义菜单项

(5)主要成员方法说明:

编辑区键盘事件:

KeyListener类如果记事本的编辑区内用键盘输入了字符,就能够被程序监听;

窗口的事件监听:

windowListener类;

菜单项的事件监听:

ActionListener类;

2.2程序流程图

2.2.1主流程图

 

 

2.2.2“文件”菜单操作流程图

 

2.2.3“编辑”菜单操作流程图

2.2.4“帮助”菜单操作流程图

三、实验器材

Ediplus3,PC机

四、制作步骤

4.1jishiben类的实现

Filefile=null;//定义一个空文件

privateJLabelstateBar;//定义一个标签

privateJTextAreatext;//定义编辑区

privateJMenuBarmb;//定义菜单栏

privateJMenufiles,edit,help;//定义菜单

privateJMenuItemOpen,New,Save,SaveAs,Exit,Cut,Copy,

Paste,Delete,Find,Replace,SelectAll,About;//定义菜单项

4.2GUI程序界面设计

publicjishiben(){//构造函数

super("记事本");//菜单栏

mb=newJMenuBar();

/*****菜单栏的各个菜单项*****/

files=newJMenu("文件");

edit=newJMenu("编辑");

help=newJMenu("帮助");

/*****“帮助”菜单项的下拉菜单******/

About=newJMenuItem("关于记事本");

/*****“文件”菜单项的下拉菜单*****/

Open=newJMenuItem("打开");

New=newJMenuItem("新建");

Save=newJMenuItem("保存");

SaveAs=newJMenuItem("另存为");

Exit=newJMenuItem("退出");

/******编辑菜单的四个下拉菜单*****/

Cut=newJMenuItem("剪切");

Copy=newJMenuItem("复制");

Paste=newJMenuItem("粘贴");

Delete=newJMenuItem("删除");

Find=newJMenuItem("查找");

Replace=newJMenuItem("替换");

SelectAll=newJMenuItem("全选");

stateBar=newJLabel("未修改");//添加标签

stateBar.setHorizontalAlignment(SwingConstants.LEFT);

stateBar.setBorder(BorderFactory.createEtchedBorder());

mb.add(files);//添加控键

mb.add(edit);

mb.add(help);

files.add(New);

files.add(Open);

files.add(Save);

files.add(SaveAs);

files.addSeparator();//分隔线

files.add(Exit);

edit.add(Cut);

edit.add(Copy);

edit.add(Paste);

edit.add(Delete);

edit.addSeparator();//分隔线

edit.add(Find);

edit.add(Replace);

edit.addSeparator();//分隔线

edit.add(SelectAll);

help.add(About);

setJMenuBar(mb);

text=newJTextArea();

add(newJScrollPane(text));//滚动面板

setSize(600,500);//设置窗口大小

setVisible(true);//使窗口显示

4.3事件处理

4.3.1编辑区键盘事件处理

text.addKeyListener(

newKeyAdapter(){

publicvoidkeyTyped(KeyEvente){

processTextArea();

}

}

);

4.3.2窗口事件处理

ClasswindowListenerextendsWindowAdapter{publicvoidwindowClosing(WindowEvente){

close();

}

}

4.3.3菜单项事件处理

classactionListenerimplementsActionListener{publicvoidactionPerformed(ActionEvente){

JMenuItemmi=(JMenuItem)e.getSource();

if(mi==New){//新建文件

text.setText("");

file=null;

}

elseif(mi==Exit){//退出

close();

}

elseif(mi==Cut){//剪切

stateBar.setText("已修改");

text.cut();

}

elseif(mi==Copy)//复制

text.copy();

elseif(mi==Paste){//粘贴

stateBar.setText("已修改");

text.paste();

}

elseif(mi==SelectAll)//全选

text.selectAll();

elseif(mi==Delete){//删除

stateBar.setText("已修改");

intstart;

intend;

start=text.getSelectionStart();

end=text.getSelectionEnd();

text.replaceRange("",start,end);

}

elseif(mi==Open){//打开

JFileChooserjf=newJFileChooser();//创建打开文件对话框

if(file!

=null)

jf.setSelectedFile(file);

intreturnVal=jf.showOpenDialog(jishiben.this);

if(returnVal==JFileChooser.APPROVE_OPTION){

file=jf.getSelectedFile();

unfold();

}

}

elseif(mi==About){//关于

Stringmessage="----记事本----"

+"感谢您的使用!

";

JOptionPane.showMessageDialog(jishiben.this,message,"关于...",JOptionPane.PLAIN_MESSAGE);

}

elseif(mi==Save)//保存

save();

elseif(mi==SaveAs){//另存为

JFileChooserjf=newJFileChooser();

if(file!

=null)

jf.setSelectedFile(file);

intreturnVal=jf.showSaveDialog(jishiben.this);

if(returnVal==JFileChooser.APPROVE_OPTION){

file=jf.getSelectedFile();

save();

}

}

elseif(mi==Find){//查找

FindAndReplacefr=newFindAndReplace();

fr.setVisible(true);

fr.setLocation(getLocation());

}

elseif(mi==Replace){//替换

FindAndReplacefr=newFindAndReplace();

fr.setVisible(true);

fr.setLocation(getLocation());

}

}

}

 

五、方案比较

(1)程序运行界面如下:

(2)“文件”菜单的菜单项:

(3)“编辑”菜单的菜单项:

(4)打开文件及另存文件时的界面:

由于打开文件和另存文件都要寻找路径,所以开始时界面相同。

(5)打开了某一个文本文件是的截图:

(6)使用查找替换时的截图:

在“查找内容”的框内输入查找的内容,再按“查找下一个”这个按钮就可以查找。

如果要替换所查找的内容,就在“替换字串”的框内输入要替换成的内容。

如图中就是把“风水”替换“风”。

(7)记事本关闭或退出时的截图:

当文件发生了剪切、删除、粘贴等操作,或者在编辑区中输入了字符,即文件进行了修改,当点击“文件”菜单中的“退出”项或者点击了窗口的关闭按钮时,就会弹出一个“保存文件?

”的对话框。

如果文件没有发生修改,关闭或者退出时,直接关闭了记事本程序。

 

六、程序代码

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

importjava.io.*;

classmynotepadextendsJFrame{

Filefile=null;

Colorcolor=Color.red;

mynotepad(){

initTextContent();………………………………………………//初始化组件

initMenu();

initAboutDialog();

}

voidinitTextContent(){

getContentPane().add(newJScrollPane(content));……//滚动面板对象

}

JTextPanecontent=newJTextPane();……………………/创建/内容输入区

JFileChooseropenfile=newJFileChooser();………………//创建打开文件对话框

JColorChooseropencolor=newJColorChooser();…………//颜色选择

JDialogabout=newJDialog(this);…………………………//关于对话框

JMenuBarmenu=newJMenuBar();………………………//创建菜单栏

//菜单栏的各个菜单项

JMenu[]menus=newJMenu[]{

newJMenu("文件"),

newJMenu("编辑"),

newJMenu("关于")

};

//“文件”菜单项的四个下拉菜单

JMenuItemoptionofmenu[][]=newJMenuItem[][]{{

newJMenuItem("新建"),

newJMenuItem("打开"),

newJMenuItem("保存"),

newJMenuItem("退出")

},

//编辑菜单的四个下拉菜单

{

newJMenuItem("复制"),

newJMenuItem("剪切"),

newJMenuItem("粘贴"),

newJMenuItem("颜色")

},

{

newJMenuItem("关于")

}

};

voidinitMenu(){

for(inti=0;i

menu.add(menus[i]);

for(intj=0;j

menus[i].add(optionofmenu[i][j]);

optionofmenu[i][j].addActionListener(action);

}

}

this.setJMenuBar(menu);

}

ActionListeneraction=newActionListener(){//添加事件监听

publicvoidactionPerformed(ActionEvente){

Stringname=e.getActionCommand();

JMenuItemMI=(JMenuItem)e.getSource();

if("新建".equals(name)){……………………………………//监听“新建”事件

content.setText("");

file=null;

}elseif("打开".equals(name)){………………………………//监听“打开”事件

if(file!

=null)openfile.setSelectedFile(file);

intreturnVal=openfile.showOpenDialog(mynotepad.this);

if(returnVal==JFileChooser.APPROVE_OPTION){

file=openfile.getSelectedFile();………………//打开选择文件

unfold();

}

}elseif("保存".equals(name)){………………………………//监听“保存”事件

if(file!

=null)openfile.setSelectedFile(file);

intreturnVal=openfile.showSaveDialog(mynotepad.this);

if(returnVal==JFileChooser.APPROVE_OPTION){

file=openfile.getSelectedFile();

saving();

}

}elseif("退出".equals(name)){

mynotepadf=newmynotepad();

ints=JOptionPane.showConfirmDialog(f,"退出?

","退出",JOptionPane.YES_NO_OPTION);…………………………//提示用户是否退出

if(s==JOptionPane.YES_OPTION)

System.exit(0);

}elseif("剪切".equals(name)){………………………………//监听“剪切”事件

content.cut();

}elseif("复制".equals(name)){………………………………//监听“复制”事件

content.copy();

}elseif("粘贴".equals(name)){………………………………//监听“粘贴”事件

content.paste();

}elseif("颜色".equals(name)){………………………………//监听“颜色”事件

color=JColorChooser.showDialog(mynotepad.this,"",color);

content.setForeground(color);……………………………//对颜色进行设置

}elseif("关于".equals(name)){

about.setSize(300,150);…………………//设置“关于”对话框大小为300×150

about.show();…………………………//显示“关于”对话框

}

}

};

voidsaving(){

try{

FileWriterWritef=newFileWriter(file);………………//创建文件写入器

Writef.write(content.getText());

Writef.close();

}

catch(Exceptione){e.printStackTrace();}

}

voidunfold(){

try{

FileReaderReadf=newFileReader(file);…………//文件读入

intlen=(int)file.length();

char[]buffer=newchar[len];

Readf.read(buffer,0,len);

Readf.close();

content.setText(newString(buffer));

}catch(Exceptione){e.printStackTrace();}

}

voidinitAboutDialog(){

about.setLayout(newGridLayout(3,1));……………//将“关于”对话框设置为3行1列

about.getContentPane().setBackground(Color.white);//设置对话框背景色

about.getContentPane().add(newJLabel("我的记事本程序"));//对话框内容

about.getContentPane().add(newJLabel("制作者:

Fwx"));

about.getContentPane().add(newJLabel("2007年12月"));

about.setModal(true

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1