JAVA记事本课程设计.docx

上传人:b****8 文档编号:9615219 上传时间:2023-02-05 格式:DOCX 页数:37 大小:431.42KB
下载 相关 举报
JAVA记事本课程设计.docx_第1页
第1页 / 共37页
JAVA记事本课程设计.docx_第2页
第2页 / 共37页
JAVA记事本课程设计.docx_第3页
第3页 / 共37页
JAVA记事本课程设计.docx_第4页
第4页 / 共37页
JAVA记事本课程设计.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

JAVA记事本课程设计.docx

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

JAVA记事本课程设计.docx

JAVA记事本课程设计

 

课程设计

课程名称:

JAVA程序设计

题目:

简易记事本

年级/专业/班:

10计本一班

学生姓名:

学号:

指导老师:

开题时间:

2012年11月10日

完成时间:

2012年12月24日

摘要

随时着科学技术的快速发展,计算机程序设计早已成为了趋势,JAVA是计算机专业的核心课程,是计算机科学的算法理论基础和软件设计的技术基础。

本课程设计就是主要利用java语言编写的一个模仿windows记事本的较简单的程序,它能实现打开文件,读取文件中的文本信息;显示、编辑修改文本信息;实现新建、打开、保存文本文件以及控制保存文本信息到指定的文件的一些基本功能。

本课程设计报告介绍了记事本系统,记事本的设计,在记事本的具体实现章节,给出了部分实现了的功能界面和相关的代码。

关键词:

JAVA,记事本,相关功能

ABSTRACT

Withtherapiddevelopmentofscienceandtechnology,computerprogramminghasalreadybecomeatrend.JAVAisacorecourseofcomputerprofessional,isthebaseofcomputerscience.JAVAarepractice-neededcurriculum.Thiscourseisdesignedtostrengthenpracticeabilityofapowerfulway,requiringJAVAapplicationsandthebasicmethodsofcomputerdebugging.ThiscourseisasimpleproceduresdesignedmainlyusingJavalanguageandtheimitationofWindowsnotepad.Itcanrealizethatopenfiles,readthetextfileinformation,display,editandmodifytextinformation,new,openandsavetextfilesandcontroltosavetextmessagestothespecifiedfileandsoon.Thisgivesatexteditorgreatconvenience,andatthesametimegreatlyimprovestheefficiency.

Thisreportintroducesnotebooksystemandnotepaddesign.Inthechapterofnotepadrealization,itgivespartofrealizedfunctioninterfaceandrelevantcode.

Keywords:

JAVA,notepad,Relevantfunction

 

一、绪论

在文本编辑器出现前,人们用打孔机把计算机文字打到穿孔卡片上。

文字存放于一个装着这样的薄卡片的盒子里,可以用读卡器来阅读它。

  

第一个文本编辑器是一种行编辑器,它运行在打字机型的终端上,这种编辑器并不具备在窗口和屏幕中显示的功能。

它包含了一些非常短的命令(为了减少打字量)。

其中一个命令能够把文件的指定部分通过打字机打印出来。

编辑光标是想象中的一个插入点,通过特殊命令,可以把它移动到特定内容字符串所在的行。

随后,内容字符串又被扩展成正则表达式。

如果想看到文件的变化,你需要把它打印出来。

相对于穿孔机来说,人们认为这种基于行的文本编辑器具有革命性的进步。

如果没有它,用户就需要把那些处理文本的命令打成专用的卡片,并在编辑文件时使用这些卡片。

  

当带有显示屏的计算机终端出现后,基于显示屏的文本编辑器开始流行起来。

最早的全屏编辑器中,有一种叫做O26,它是于1967年为CDC6000系列机器的操作控制台而作的。

另外一个早期的全屏编辑器是vi。

vi诞生于20世纪70年代,至今,它仍是Unix和Linux的标准编辑器。

全屏编辑器对视频终端的销售起到了促进的作用。

二、需求分析

1、功能需求

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

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

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

(3)“编辑”中,有“撤销”、“复制”、“剪切”、“粘贴”、“删除”、“全选”六个个子菜单,分别用于撤销上一次操作,复制选中文字,剪切选中文字,粘贴选中文字,删除选中文字,选定整个文件内容。

(4)“格式”中有自动换行和字体两个子菜单,字体中包含了“字体”、“字形”、“大小”、“颜色”四个操作项。

字体项可以对文字的字体样式做修改,字体数量为Windows默认数值。

字形项可以对文字的形式进行修改,共有“常规”、“倾斜”、“粗体”、“粗体+倾斜”四个选项。

大小中包含了8-72磅大小范围内的字体大小数值选项。

颜色可以对字体进行颜色上的修改,是字体更加漂亮,颜色数量为Windows默认值。

自动换行能够实现文档在编辑是否需要的自动换行功能。

(5)“帮助”菜单中有“关于记事本”一个子菜单,用于描述记事本程序的相关信息和开发人员的个人信息。

2、函数需求

本次设计中,设计了一个菜单栏和文本内容区。

设计过程中用到了JScrollPane,JMenu,JTextPane,JFileChooser等。

JMenu用来制作菜单,JTextPane主要用来输入文本。

为了加入颜色的设置,所以加了一个JColorChooser组件。

整个记事本分为2块,菜单栏和内容输入区。

菜单栏设计如下:

类名:

EditWindow

(1)作用:

主类

(2)继承的父类:

JFrame类

(3)实现的接口:

windowListener类与actionListener类

(4)成员变量说明:

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

privateJLabelstateBar;//定义一个标签

privateJTextAreatext;//定义编辑区

privateJMenuBarmenubar;//定义菜单栏

privateJMenumenu1、menu2、menu3、menu4;//定义菜单

privateJMenuitem1-6,item2-6,item3-2,item4//定义菜单项

主要成员方法说明:

编辑区键盘事件:

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

窗口的事件监听:

windowListener类,用来监听处理容器关闭触发的事件:

菜单项的事件监听:

ActionListener类,用来监听并处理所有菜单项和内容输入区为事件源的事件。

3、开发环境及运行环境分析

本记事本的开发环境是在windows7的环境下开发,运用了EditPul文本编辑器v3.30、JDK1.6开发工具,运行环境是DOS下运行的。

 

三、总体设计

1、系统流程设计

2、分模块设计

(1)“文件”菜单模块设计流程图

(2)“编辑”菜单模块设计流程图

 

(3)“格式”菜单模块设计流程图

(4)“帮助”菜单模块设计流程图

3、类设计

成员变量类型

成员变量名

成员变量描述

JMenuBar

menubar

菜单条

JTextArea

area

文本区

JScrollPane

pane

滚动条,当文本内容大于文本区时的时候显示。

JMenu

menu1、menu2、menu3、menu4

文件、编辑、字体、帮助

JMenuItem

item11,item12,item13,item14,item16

新建、打开、保存、另存为、退出

JMenuItem

item21,item22,item23,item24,item25,item26

撤销、复制、剪切、粘贴、删除、全选

JMenuItem

item31,item32

自动换行、字体

JMenuItem

item41

关于记事本

4、界面设计

(1)主界面

主界面主要是用于对选择相应的功能进行相应的功能,主界面主要包括文件,编辑,格式,帮助四个下拉菜单功能。

主要代码:

publicclassexamJSB

{

publicstaticvoidmain(String[]args)

{

EditWindowwin=newEditWindow("新建文本文档");

}

}

classEditWindowextendsJFrameimplementsActionListener

{

JMenuBarmenubar;

JMenumenu1;

JMenumenu2;

JMenumenu3;

JMenumenu4;

JTextAreaarea;

JFileChooserfileChooser;

privateStringvalue;

booleanisSaved=true;

EditWindow(Strings)

{

setTitle(s);

setSize(400,400);

setLocation(50,50);

setVisible(true);

fileChooser=newJFileChooser("c:

/");//打开文件

menubar=newJMenuBar();

menu1=newJMenu("文件");

menu2=newJMenu("编辑");

menu3=newJMenu("格式");

menu4=newJMenu("帮助");

//文字编辑区域

area=newJTextArea();

area.setFont(newFont("宋体",Font.PLAIN,16));/*设置当前字体*/

area.setLineWrap(true);/*设置文本区的换行策略*/

JScrollPanepane=newJScrollPane(area,

JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,

ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);/*垂直和水平滚动条-查看无法完全显示时,滚动条显示*/

ContainercontentPane=getContentPane();

contentPane.add(pane,BorderLayout.CENTER);

validate();

isSaved=false;//刚刚打开的窗口状态为未保存

this.setLocationRelativeTo(null);

this.setDefaultCloseOperation(EXIT_ON_CLOSE);

}

(2)打开界面

主要代码:

elseif(e.getSource()==item12)//打开

{

area.setText(null);

intn=fileChooser.showOpenDialog(null);

if(n==JFileChooser.APPROVE_OPTION)

{

Filefile=fileChooser.getSelectedFile();

try{

FileReaderreadfile=newFileReader(file);

BufferedReaderin=newBufferedReader(readfile);

Strings=null;

while((s=in.readLine())!

=null)

area.append(s+"\n");

}

catch(IOExceptionee){}

}

}

(3)保存界面

主要代码:

privatevoidSave(){

//从标题栏取得文件名称

Filefile=newFile(getTitle());

//若指定的文件不存在

if(!

file.exists()){

//执行另存为

saveFileAs();

}

else{

try{

//开启指定的文件

BufferedWriterbuf=

newBufferedWriter(

newFileWriter(file));

//将文字编辑区的文字写入文件

buf.write(area.getText());

buf.close();

}

catch(IOExceptione){

JOptionPane.showMessageDialog(null,e.toString(),

"写入文件失败",JOptionPane.ERROR_MESSAGE);

}

}

}

(4)字体界面

主要代码:

//引用Fonts事件设计字体

classFontsextendsJDialog

{

privatestaticfinallongserialVersionUID=4042773383845024827L;

//字体格式

Stringstyle=null;

Stringbold=null;

Stringsize=null;

Fontfont=null;

String[]str_style=GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();

String[]str_bold={"常规","倾斜","粗体","粗体倾斜"};

String[]str_size={"8","9","10","11","12","14","16","18","20","22",

"24","26","28","36","48","72"};

//

publicJLabellabel1=newJLabel("字体(F):

");

publicJListfontStyle=newJList(str_style);

publicJScrollPaneStyleJScrollPane=newJScrollPane(fontStyle);

publicJLabellabel2=newJLabel("字形(Y):

");

publicJListfontBold=newJList(str_bold);

publicJScrollPaneBoldJScrollPane=newJScrollPane(fontBold);

publicJLabellabel3=newJLabel("大小(S):

");

publicJTextFieldsizeField=newJTextField("23");

publicJListfontSize=newJList(str_size);

publicJScrollPaneSizeJScrollPane=newJScrollPane(fontSize);

publicJLabelfontDisplay=newJLabel("AaBbYyZz");

publicJTextFieldtextField=newJTextField();

publicJButtonsureButton=newJButton("确定");

publicJButtoncancelButton=newJButton("取消");

publicJButtoncolorButton=newJButton("改变颜色");

publicColorcolor;

EditWindowmy=null;

publicFonts(EditWindowframe)

{

super(frame,"字体和颜色",true);

color=Color.black;

this.my=frame;

this.style="宋体";

this.bold="常规";

this.size="23";

label1.setBounds(10,5,50,30);

StyleJScrollPane.setBounds(10,40,160,150);

fontStyle.addMouseListener(newMouseAdapter(){

publicvoidmousePressed(MouseEvente)

{

JListsource=(JList)e.getSource();

Fonts.this.style=source.getSelectedValue().toString();

Fonts.this.setFont();

}

});

label2.setBounds(190,5,50,30);

BoldJScrollPane.setBounds(190,40,90,150);

fontBold.addMouseListener(newMouseAdapter(){

publicvoidmousePressed(MouseEvente)

{

JListsource=(JList)e.getSource();

Fonts.this.bold=source.getSelectedValue().toString();

Fonts.this.setFont();

}

});

label3.setBounds(300,5,60,30);

SizeJScrollPane.setBounds(300,60,60,130);

fontSize.addMouseListener(newMouseAdapter(){

publicvoidmousePressed(MouseEvente)

{

JListsource=(JList)e.getSource();

sizeField.setText(source.getSelectedValue().toString());

Fonts.this.size=source.getSelectedValue().toString();

Fonts.this.setFont();

}

});

sizeField.setBounds(300,40,60,20);

fontDisplay.setBorder(BorderFactory.createTitledBorder("示例"));

fontDisplay.setBounds(20,220,200,100);

fontDisplay.setHorizontalAlignment(JLabel.CENTER);

sureButton.setBounds(280,260,80,30);

sureButton.addActionListener(newActionListener(){

@Override

publicvoidactionPerformed(ActionEvente){

my.area.setFont(font);

my.area.setForeground(color);

Fonts.this.dispose();

}

});

cancelButton.setBounds(280,300,80,30);

cancelButton.addActionListener(newActionListener(){

@Override

publicvoidactionPerformed(ActionEvente){

Fonts.this.dispose();

}

});

colorButton.setBounds(260,220,100,20);

this.add(colorButton);

colorButton.addActionListener(newActionListener(){

@Override

publicvoidactionPerformed(ActionEventarg0){

//TODOAuto-generatedmethodstub

color=JColorChooser.showDialog(null,"改变字体颜色",Color.black);

}

});

this.add(label1);

this.add(label2);

this.add(label3);

this.add(sizeField);

this.add(BoldJScrollPane);

this.add(StyleJScrollPane);

this.add(SizeJScrollPane);

this.add(fontDisplay);

this.add(sureButton);

this.add(cancelButton);

this.setLayout(null);

this.setSize(400,380);

intx=(int)my.getLocation().x+100;

inty=(int)my.getLocation().y+100;

this.setLocation(x,y);

}

//由选项确定font字体

voidsetFont(){

intbold;

if(this.bold.equals("粗体"))

bold=Font.BOLD;

elseif(this.bold.equals("常规"))

bold=Font.PLAIN;

elseif(this.bold.equals("粗体倾斜"))

bold=Font.BOLD+Font.ITALIC;

elseif(this.bold.equals("倾斜"))

bold=Font.ITALIC;

else

bold=Font.PLAIN;

this.font=newFont(this.style,bold,Integer.parseInt(this.size));

//更改样本字体

//Sys

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

当前位置:首页 > 经管营销 > 销售营销

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

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