文本编辑器的设计实现分析.docx

上传人:b****1 文档编号:312295 上传时间:2023-04-28 格式:DOCX 页数:24 大小:22.28KB
下载 相关 举报
文本编辑器的设计实现分析.docx_第1页
第1页 / 共24页
文本编辑器的设计实现分析.docx_第2页
第2页 / 共24页
文本编辑器的设计实现分析.docx_第3页
第3页 / 共24页
文本编辑器的设计实现分析.docx_第4页
第4页 / 共24页
文本编辑器的设计实现分析.docx_第5页
第5页 / 共24页
文本编辑器的设计实现分析.docx_第6页
第6页 / 共24页
文本编辑器的设计实现分析.docx_第7页
第7页 / 共24页
文本编辑器的设计实现分析.docx_第8页
第8页 / 共24页
文本编辑器的设计实现分析.docx_第9页
第9页 / 共24页
文本编辑器的设计实现分析.docx_第10页
第10页 / 共24页
文本编辑器的设计实现分析.docx_第11页
第11页 / 共24页
文本编辑器的设计实现分析.docx_第12页
第12页 / 共24页
文本编辑器的设计实现分析.docx_第13页
第13页 / 共24页
文本编辑器的设计实现分析.docx_第14页
第14页 / 共24页
文本编辑器的设计实现分析.docx_第15页
第15页 / 共24页
文本编辑器的设计实现分析.docx_第16页
第16页 / 共24页
文本编辑器的设计实现分析.docx_第17页
第17页 / 共24页
文本编辑器的设计实现分析.docx_第18页
第18页 / 共24页
文本编辑器的设计实现分析.docx_第19页
第19页 / 共24页
文本编辑器的设计实现分析.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

文本编辑器的设计实现分析.docx

《文本编辑器的设计实现分析.docx》由会员分享,可在线阅读,更多相关《文本编辑器的设计实现分析.docx(24页珍藏版)》请在冰点文库上搜索。

文本编辑器的设计实现分析.docx

文本编辑器的设计实现分析

软件学院

课程设计报告书

课程名称

设计题目文本编辑器的设计与实现

专业班级**********X

学号**********

姓名**x

指导教师

2011年11月

1设计时间

2011年11月

2设计目的

"面向对象程序设计"是一门实践性很强的计算机专业根底课程,课程设计是学习完该课程后进展的一次较全面的综合练习。

其目的在于通过实践加深学生对面向对象程序设计的理论、方法和根底知识的理解,掌握使用Java语言进展面向对象设计的根本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力,提高学生的应用能力。

目前文本编辑器种类很多,所提供的功能也很多,但是能满足用户实现多种功能和进展Java的编译与运行很少,不能更好的适应当前用户的要求。

本设计所完成的文本编辑器功能是针对学习Java程序语言,因此我们利用Java程序设计虚拟机和软件对用户及使用者的应用过程形成一整套完整的编写代码,编译,运行。

3设计任务

文本编辑器的设计与实现:

设计一个类似于Windows记事本(Notepad)的Java程序。

可以翻开、新建、保存一个文本文件;对选中的文本进展各种编辑操作〔设置字体、字号、字型、对齐方式、背景、前风光、复制、粘贴、剪切、查找、替换等〕;在文本中能够插入对象。

4设计容

4.1需求分析

需求分析的任务是确定功能必须完成的工作,也就是对目标系统提出完整、准确、清晰、具体的要求。

简单文本编辑器提供应用户根本的纯文本编辑功能,能够将用户录入的文本存储到本地磁盘中。

能够读取磁盘中现有的纯文本文件,以及方便用户进展需要的编辑功能。

文件操作能够实现新建、保存、翻开文档等,编辑操作能过实现文本的剪贴、复制、粘贴等,格式操作能过实现字体设置、背景等,帮助操作能够实现关于主题的查看等功能。

4.2概要设计

4.2.1程序根本功能概括

文本编辑器

格式

编辑

黏贴

翻开

菜单

保存

新建

退出

另存为

文件

剪切

黏贴

查找

复制

字体

字号

插入对象

替换

图4.2.1功能架构图

4.2.2程序主要组件概括

1.根本的Frame框架;

2.菜单;

3.翻开文件对话框;

4.保存文件对话框;

5.颜色对话框;

6.Choice下拉列表,运来实现字体设置;

7.简单的帮助框架。

4.3详细设计

4.3.1文件翻开与保存

文本编辑器的保存和翻开功能的实现用文件对话框及输入输出流来完成。

先建立翻开和保存对话框,在publicvoidactionPerformed(ActionEvente)里分别用FileWriter()和FileReader()方法实现保存和翻开。

filedialog_save=newFileDialog(this,"保存文件对话框",FileDialog.SAVE);

filedialog_save.setVisible(false);

filedialog_load=newFileDialog(this,"保存文件对话框",FileDialog.LOAD);

filedialog_load.setVisible(false);

filedialog_save.addWindowListener(newWindowAdapter()

{

publicvoidwindowClosing(WindowEvente)

{

filedialog_save.setVisible(false);

}

});

filedialog_load.addWindowListener(newWindowAdapter()

{

publicvoidwindowClosing(WindowEvente)

{

filedialog_load.setVisible(false);

}

});

publicvoidactionPerformed(ActionEvente)

{

if(e.getSource()==itemSave)

{

filedialog_save.setVisible(true);

if(filedialog_save.getFile()!

=null)

{

try{Filefile=new

File(filedialog_save.getDirectory(),

filedialog_save.getFile());

tofile=newFileWriter(file);

out=newBufferedWriter(tofile);

out.write(area.getText(),0,(area.getText()).length());

out.close();

tofile.close();

}

catch(IOExceptione1){}

}

}

elseif(e.getSource()==itemLoad)

{

filedialog_load.setVisible(true);

area.setText(null);

Strings;

if(filedialog_load.getFile()!

=null)

{

try{Filefile=new

File(filedialog_load.getDirectory(),

filedialog_load.getFile());

file_reader=newFileReader(file);

in=newBufferedReader(file_reader);

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

=null)

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

in.close();

file_reader.close();

}

catch(IOExceptione1){}

}

}

4.3.2字体,字形,字体大小的设置

文本编辑器要实现对字体的设置,选用了GraphicsEnvironment对象调用String[]getAvailableFontFamilyNames()方法,该方法可以获取计算机上所有可用的字体名称,并存放到字符串数组中。

Choicelist;

GraphicsEnvironmentge=GraphicsEnvironment.getLocalGraphicsEnvironment();

StringfontName[]=ge.getAvailableFontFamilyNames();

publicvoiditemStateChanged(ItemEvente)

{

Stringname=list.getSelectedItem();

Fontf=newFont(name,Font.PLAIN,15);

area.setFont(f);

}

elseif(e.getSource()==item8)//设置字形〔常规,倾斜,加粗〕

{

Fontfont=area.getFont();

intstyle=font.getStyle();

style=style^0;

area.setFont(newFont("",style,font.getSize()));

}

elseif(e.getSource()==item9)

{

Fontfont=area.getFont();

intstyle=font.getStyle();

style=style^2;

area.setFont(newFont("",style,font.getSize()));

}

elseif(e.getSource()==item10)

{

Fontfont=area.getFont();

intstyle=font.getStyle();

style=style^1;

area.setFont(newFont("",style,font.getSize()));

}

elseif(e.getSource()==item11)//设置字体大小

{

Fontfont=area.getFont();

intstyle=font.getStyle();

area.setFont(newFont(font.getName(),style,12));

}

elseif(e.getSource()==item12)

{

Fontfont=area.getFont();

intstyle=font.getStyle();

area.setFont(newFont(font.getName(),style,24));

}

elseif(e.getSource()==item13)

{

Fontfont=area.getFont();

intstyle=font.getStyle();

area.setFont(newFont(font.getName(),style,36));

}

4.3.3剪切,复制,粘贴设置

文本编辑器中关于剪切,复制,粘贴功能的实现选用处理JTextArea的DocumentEvent事件,通过area.cut(),area.copy(),area.paste()方法,点击"编辑〞中相应菜单项可以选择将文本区中选中的容剪切,复制,粘贴。

publicvoidchangedUpdate(DocumentEvente)

{

Strings=area.getText();

}

publicvoidremoveUpdate(DocumentEvente)

{

changedUpdate(e);

}

publicvoidinsertUpdate(DocumentEvente)

{

changedUpdate(e);

}

publicvoidactionPerformed(ActionEvente)

{

elseif(e.getSource()==item2)

{

area.cut();

}

elseif(e.getSource()==item3)

{

area.copy();

}

elseif(e.getSource()==item4)

{

area.paste();

}

}

4.3.4插入子菜单,删除子菜单,创立格式菜单及其菜单项

JMenuIteminsertItem=newJMenuItem("插入文本(K)");

insertItem.setMnemonic('K');

editMenu.add(insertItem);

insertItem.addActionListener(

newActionListener(){

publicvoidactionPerformed(ActionEventevent){

JPanelinsertPanel=newJPanel();

JLabelinsertLabel=newJLabel("要插入的容");

JTextFieldinputText=newJTextField(10);

insertPanel.add(insertLabel);

insertPanel.add(inputText);

JOptionPane.showMessageDialog(null,insertPanel);

intfromIndex=displayText.getCaretPosition();//取得当前的光标位置

displayText.insert(inputText.getText(),fromIndex);

}

}

);

JMenuItemRemoveItem=newJMenuItem("删除(G)");

RemoveItem.setMnemonic('G');

editMenu.add(RemoveItem);

RemoveItem.addActionListener(newActionListener()

{

publicvoidactionPerformed(ActionEvente)

{intstart=displayText.getSelectionStart();

intend=displayText.getSelectionEnd();

displayText.replaceRange(null,start,end);

}

});

editMenu.addSeparator();

bar.add(editMenu);//addeditMenu

JMenuformatMenu=newJMenu("格式(R)");

formatMenu.setMnemonic('R');

4.3.5创立,添加帮助菜项

JMenuhelpMenu=newJMenu("帮助(H)");

helpMenu.setMnemonic('H');

JMenuItemhelpItem=newJMenuItem("帮助主题(H)...");

helpItem.setMnemonic('H');

helpMenu.add(helpItem);

helpItem.addActionListener(

newActionListener(){

publicvoidactionPerformed(ActionEventevent){

JTextAreahelpText=newJTextArea(

JScrollPanescroller=newJScrollPane(helpText);

JOptionPane.showMessageDialog(null,scroller);

}

}

);

bar.add(helpMenu);//添加

4.4设计成果

4.4.1运行界面

图2文本编辑器主界面

图3文本编辑器编辑界面

图4文本编辑器文件界面

图5文本编辑器格式

图6文本编辑器查找界面

图7文本编辑器帮助界面

图8文本编辑器字体名称界面

图9文本编辑器字体风格界面

图10文本编辑器中帮助中关于对话框

图11查找消息对话框

图12文本编辑器中另存为对话框

4.4.2主要代码

importjava.awt.*;

importjava.awt.event.*;

importjava.awt.datatransfer.*;

importjavax.swing.*;

importjava.io.*;

importjava.lang.*;

publicclassNotepadextendsJFrame{

privatefinalColorcolorvalues[]=

{Color.black,Color.blue,Color.red,Color.green};//定义颜色数组

StringstyleNames[]={"Bold","Italic"};//定义风格数组

StringfontNames[]={"宋体","华文行楷","隶书"};//字体数组

String[]sizeString=newString[30];//字号数组

int[]size=newint[30];//与字号数组对应的字号整数,用于设置文字大小

privateJRadioButtonMenuItemcolorItems[],fonts[];

privateJCheckBoxMenuItemstyleItems[];

privateJTextAreadisplayText;//定义文本编辑区

privateButtonGroupfontGroup,colorGroup;//字体组,跟字色组

privateintstyle;//字体风格

privateJScrollPanescroll;//为文本编辑区提供滚动条

privateStringselectText="";//存放文本编辑区中选中的文本容

privateoBoxstyleBox,fontBox,sizeBox;//工具栏

privateJPaneltoolPanel;//存放工具栏

privateintrowNumber=0;

privateFileDialogfd=newFileDialog(this);

//setupGUI

publicNotepad()

{

super("记事本");

//创立菜单条

JMenuBarbar=newJMenuBar();

setJMenuBar(bar)

//设置文件菜单及其菜单项

JMenufileMenu=newJMenu("文件(F)");

fileMenu.setMnemonic('F');

//设置新建菜单项

JMenuItemnewItem=newJMenuItem("新建〔N〕");

newItem.setMnemonic('N');

fileMenu.add(newItem);

newItem.addActionListener(

newActionListener(){

publicvoidactionPerformed(ActionEventevent)

{displayText.setText("");

}});

//设置翻开菜单项

JMenuItemopenItem=newJMenuItem("翻开(O)");

openItem.setMnemonic('O');

fileMenu.add(openItem);

openItem.addActionListener(

newActionListener(){

publicvoidactionPerformed(ActionEventevent)

{

fd.setTitle("翻开");

//设置标题

fd.show();

if(fd.getFile()!

=null){

Filefile=newFile(fd.getFile());//用从fd中取得的文件建立新文件,即翻开的文件

displayText.setText("");

try{

FileReaderf=newFileReader(file);

BufferedReaderb=newBufferedReader(f);//按行读翻开的文件,然后传入文本域

Strings;

try{

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

=null){

displayText.append(s+"\n");//将给定文本追加到文本域的当前文本〔即把读的容参加文本域〕

}

f.close();

b.close();

}catch(IOExceptionex){}

}catch(FileNotFoundExceptionex){

}

else{return;}

}

});

fileMenu.addSeparator();//加分隔线

//设置退出菜单项

JMenuItemexitItem=newJMenuItem("退出(X)");

exitItem.setMnemonic('x');

fileMenu.add(exitItem);

exitItem.addActionListener(

newActionListener(){

publicvoidactionPerformed(ActionEventevent)

{

System.exit(0);

}

}

);

bar.add(fileMenu);

//剪切菜单项选择项

JMenuItemcutItem=newJMenuItem("剪切(T)");

cutItem.setMnemonic('T');

editMenu.add(cutItem);

cutItem.addActionListener(

newActionListener(){

publicvoidactionPerformed(ActionEventevent){

selectText=displayText.getSelectedText();//取得选定的文本

intstart=displayText.getSelectionStart();//选定的文本的开场位置

intend=displayText.getSelectionEnd();//选定的文本的完毕位置

displayText.replaceRange("",start,end);/*用指定替换文本替换指定

开场位置与完毕位置之间的文本。

这里指定替换文本为空,即为剪切了文本*/

}

}

);

//复制菜单项选择项

JMenuItemcopyItem=newJMenuItem("复制(C)");

copyItem.setMnemonic('C');

editMenu.add(copyItem);

copyItem.ad

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

当前位置:首页 > 自然科学 > 生物学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2