java记事本课程设计论文附源码解析Word下载.docx
- 文档编号:20697598
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:23
- 大小:1.23MB
java记事本课程设计论文附源码解析Word下载.docx
《java记事本课程设计论文附源码解析Word下载.docx》由会员分享,可在线阅读,更多相关《java记事本课程设计论文附源码解析Word下载.docx(23页珍藏版)》请在冰豆网上搜索。
编程调试阶段
周二至周三
3
编写课程设计报告
周四
4
考核
周五
总计
5(天)
指导教师(签字)
日期
年月日
教研室意见:
学生(签字):
接受任务时间:
年月日
摘要
目前,很多新的技术领域都涉及到了Java语言,Java语言是面向对象编程,并涉及到网络、多线程等重要的基础知识,因此Java语言也是学习面向对象编程和网络编程的首选语言。
此次课程设计主要通过编写一个简单的记事本程序使我们深入理解并实践在本课程中所学的有关JAVA程序设计方面的语言基础、异常处理、事件处理、小应用程序以及图形用户界面设计等内容。
此简易记事本程序,使用Java程序编写,能够进行输入文字操作,并具有新建文件,打开文件,保存文件,退出,复制,粘贴,剪切等功能。
该程序主要用到了Javaswing和事件监听等。
关键词记事本程序,java语言,Javaswing
摘要1
1需求分析3
1.1需求分析3
1.2功能设计3
2概要分析4
2.1概要设计思想4
2.2程序运行界面4
2.3程序模块说明5
2.4流程图6
2.5程序相关说明7
3程序详细设计与分析8
3.1构建菜单栏及其下拉菜单8
3.2“文件”菜单操作的事件监听8
3.3“编辑”、“格式”等菜单的事件监听10
3.4异常处理11
4测试分析12
5源程序清单15
结论22
参考文献23
1需求分析
1.1需求分析
现在网络上各种文档编辑器数不胜数,有EmEditor,UEStudio,GridinSoftNotepad,Notepad++,win32pad,SkimEdit,UniRed,xint。
功能也是应有尽有,有能改变字体的,有能改变文字颜色的。
但是,这些软件又存在各种各样的瑕疵或问题:
有的文件体积相对于一般文字编辑来说太大;
有的功能太繁杂,使初级使用者一时难以掌握。
仅从日常应用方面来说,一个文本编辑器只需一些简单实用的功能就够了。
本程序设计就是依照这样一种使用需要设计了一个简单的记事本程序。
1.2功能设计
本程序要构建的记事本程序参照了Windows操作系统的记事本工具,其功能有以下几个方面:
1、菜单中有“文件”,“编辑”,“格式”,“查看”,“帮助”五个主菜单。
2、“文件”有“新建”“打开”“保存”“另存为”“退出”五个子菜单:
分别用于新建文件,打开文件,保存文件,另存文件,退出记事本。
3、“编辑”中有“撤销”“剪切”“复制”“粘贴”“全选”“时间/日期”六个字菜单:
用于撤销操作,剪切文字,复制文字,粘贴文字。
全部选择,插入日期、时间。
4、“格式”菜单中有“自动换行”和“字体”两个子菜单。
5、“查看”菜单只是显示状态栏。
6、“帮助”菜单中只有“关于记事本”子菜单,主要用于显示该程序的名字,版本等信息。
2概要分析
2.1概要设计思想
在本程序中,设计了一个菜单栏和文本内容区。
设计过程中用到了JMenu,JMenuItem等。
JMenu用来制作菜单,菜单包括“文件”“编辑”“格式”“查看”“帮助”。
JMenuItem主要用来制作主菜单下面的子菜单。
2.2程序运行界面
图2.1记事本程序运行界面
2.3程序模块说明
图2.2类Notepad模块
图2.3程序详细模块
2.4流程图
图2.4程序流程图
2.5程序相关说明
整个记事本分为2快:
菜单栏和内容输入区。
本程序中首先定义一个Notepad类继承JFrame作为最底层容器。
(1)、text为程序文本输入区。
(2)、Menu为菜单栏。
(3)、要想记事本完成需求分析中相应的功能,还必须添加事件监听器。
事件监听器不仅要添加在菜单栏和内容输入区,还需加在容器中。
本程序中Listen和Listen1实现了ActionListener接口,用来监听并处理所有菜单项和内容输入区为事件源的事件。
3程序详细设计与分析
3.1构建菜单栏及其下拉菜单
JMenufiles=newJMenu("
文件(F)"
);
JMenuedit=newJMenu("
编辑(E)"
JMenuformats=newJMenu("
格式(O)"
JMenuscan=newJMenu("
查看(V)"
JMenuhelp=newJMenu("
帮助(H)"
JMenuItemnewFile=newJMenuItem("
新建(N)"
JMenuItemopen=newJMenuItem("
打开(O)..."
JMenuItemsave=newJMenuItem("
保存(S)"
JMenuItemsaveAs=newJMenuItem("
另存为(A)..."
JMenuItemexit=newJMenuItem("
退出(X)"
JMenuItemundo=newJMenuItem("
撤销(U)"
JMenuItemcut=newJMenuItem("
剪切(T)"
JMenuItemcopy=newJMenuItem("
复制(C)"
JMenuItempaste=newJMenuItem("
粘贴(P)"
JMenuItemselectAll=newJMenuItem("
全选(A)"
JMenuItemtimeDate=newJMenuItem("
时间/日期(D)"
JCheckBoxMenuItemlineWrap=newJCheckBoxMenuItem("
自动换行(M)"
JMenuItemfonts=newJMenuItem("
字体..."
JMenuItemstatus=newJMenuItem("
状态栏"
JMenuItemabout=newJMenuItem("
关于记事本(A)"
3.2“文件”菜单操作的事件监听
classListen1implementsActionListener
{
//实现用于对文件进行操作的事件侦听器
publicvoidactionPerformed(ActionEvente)
{
Objectsource=e.getSource();
//打开文件事件
if(source==open)
{
FileDialogopenFile=newFileDialog(th,"
打开文件..."
FileDialog.LOAD);
openFile.setVisible(true);
StringfilePath=openFile.getDirectory()+openFile.getFile();
try
{
FileInputStreamfis=newFileInputStream(filePath);
byte[]content=newbyte[fis.available()];
fis.read(content);
text.setText(newString(content));
text.setCaretPosition(0);
if(openFile.getFile()!
=null)
{
th.setTitle(openFile.getFile()+name);
openedPath=filePath;
opened=true;
}
fis.close();
}
catch(Exceptionex)
ex.printStackTrace();
opened=true;
}
//保存及另存为事件
elseif(source==save||source==saveAs)
StringsavePath=openedPath;
if(savePath==null||source==saveAs)
FileDialogsaveFile=newFileDialog(th,"
保存文件..."
FileDialog.SAVE);
saveFile.setVisible(true);
savePath=saveFile.getDirectory()+saveFile.getFile();
FileOutputStreamfos=newFileOutputStream(savePath);
fos.write(text.getText().getBytes());
fos.close();
if(source==save)
openedPath=savePath;
}
}
3.3“编辑”、“格式”等菜单的事件监听
classListenimplementsActionListener
//实现用于一般操作的事件侦听器
if(source==newFile)
text.setText("
"
th.setTitle(name);
openedPath=null;
opened=false;
elseif(source==exit)
System.exit(0);
elseif(source==selectAll)
text.selectAll();
elseif(source==cut)
text.cut();
elseif(source==copy)
text.copy();
elseif(source==paste)
text.paste();
elseif(source==lineWrap)
text.setLineWrap(!
text.getLineWrap());
elseif(source==about)
Stringmessage="
java记事本\n版本0.01\n版权所有2013pzhjsj\n\n本产品符合最终用户许可协议,授权给:
\npzhjsj\n"
;
JOptionPane.showMessageDialog(th,message,"
关于记事本"
JOptionPane.PLAIN_MESSAGE);
elseif(source==timeDate)
DatenowTime=newDate();
SimpleDateFormattimes=newSimpleDateFormat("
HH:
mmyyyy-MM-dd"
text.insert(times.format(nowTime),text.getCaretPosition());
3.4异常处理
在运行程序代码是有可能会产生异常情况或异常事件,为了避免这种情况,就需要在程序中用到Java异常处理机制。
本程序中选用的异常处理机制是try,catch。
捕获处理异常的第一步是用try选定要监控的异常范围,try后跟随catch代码块。
try{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
catch(Exceptione){
System.err.println("
Couldn'
tusethesystemlookandfeel:
+e);
}
4测试分析
图4.1“文件”菜单
图4.2点击“另存为”运行情况
图4.3“编辑”菜单
图4.4插入“时间/日期”
图4.5“查看”菜单
图4.6“帮助”菜单
5源程序清单
/*******************************************
*
*文本编辑器(模拟实现Windows记事本程序)
*Notepad.java
*模拟Windows的记事本程序,编写一个记事本。
*要求具备基本的编辑、复制、粘贴、剪切、保存文件等功能,界面美观。
*
********************************************/
importjava.io.*;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjava.util.Date;
importjava.text.SimpleDateFormat;
publicclassNotepadextendsJFrame
{
JMenuBarmenub=newJMenuBar();
JTextAreatext=newJTextArea();
JMenufiles=newJMenu("
JMenuItemabout=newJMenuItem("
JFrameth=this;
Stringname;
StringopenedPath=null;
booleanopened=false;
booleanreworked=false;
//初始化窗体
Notepad(Stringname)
super(name);
this.name=name;
intx,y;
Dimensionsize=Toolkit.getDefaultToolkit().getScreenSize();
x=(size.width-600)/2;
y=(size.height-400)/2;
setSize(600,400);
setLocation(x,y);
//让程序界面显示在屏幕中央
setMinimumSize(newDimension(250,150));
setDefaultCloseOperation(EXIT_ON_CLOSE);
//初始化布局
voidinit()
files.setMnemonic('
F'
edit.setMnemonic('
E'
formats.setMnemonic('
O'
scan.setMnemonic('
V'
help.setMnemonic('
H'
newFile.setMnemonic('
N'
open.setMnemonic('
save.setMnemonic('
S'
saveAs.setMnemonic('
A'
exit.setMnemonic('
X'
undo.setMnemonic('
U'
cut.setMnemonic('
T'
copy.setMnemonic('
C'
paste.setMnemonic('
P'
selectAll.setMnemonic('
timeDate.setMnemonic('
D'
lineWrap.setMnemonic('
M'
about.setMnemonic('
//为控件添加助记符
newFile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK));
open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));
save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
exit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q,InputEvent.CTRL_MASK));
cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));
copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));
paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK));
selectAll.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK));
timeDate.setAccelerator(KeyStroke.getKeyStroke("
F5"
));
//为控件添加快捷键
files.add(newFile);
files.add(open);
files.add(save);
files.add(saveAs);
files.addSeparator();
files.add(exit);
edit.add(undo);
edit.addSeparator();
edit.add(cut);
edit.add(copy);
edit.add(paste);
edit.add(selectAll);
edit.add(timeDate);
formats.add(lineWrap);
formats.add(fonts);
scan.add(status);
help.add(about);
menub.add(files);
menub.add(edit);
menub.add(formats);
menub.add(scan);
menub.add(help);
setJMenuBar(menub);
getContentPane().add(newJScrollPane(text));
Listenlisten=newListen();
Listen1listen1=newListen1();
newFile.addActionListener(listen);
open.addActionListener(listen);
save.addActionListener(listen);
saveAs.addA
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 记事本 课程设计 论文 源码 解析