java简易文本编辑.docx
- 文档编号:3988915
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:13
- 大小:126.06KB
java简易文本编辑.docx
《java简易文本编辑.docx》由会员分享,可在线阅读,更多相关《java简易文本编辑.docx(13页珍藏版)》请在冰豆网上搜索。
java简易文本编辑
JAVA课程设计报告
实验名称:
文本编辑器
姓名:
学号:
学院:
专业:
指导老师:
一.需求分析
1.实验题目:
文本编辑器
2.基本要求:
设计一个简易文本编辑器。
要求除进行文本文件的编辑、阅读之外,还要实现文件的打开、保存功能;复制、剪切与粘贴等剪贴板操作;文本的查找与替换操作;各操作通过菜单选择。
其他:
jdk1.7的版本,在JCreator下运行通过。
二.概要设计
本程序有以下几个类:
classMyEditorextendsJFrameimplementsActionListener,MouseListener//主窗口类,实现窗口,文本区监听和鼠标监听
本程序有一下方法:
publicMyEditor()//实现窗口的,位置监听的添加
publicvoidactionPerformed(ActionEventae)//实现对菜单项的操作
publicvoidmousePressed(MouseEvente)//实现鼠标右击时相应的操作
publicstaticvoidmain(String[]args)//创建类
主类是MyEditor,其中主窗口的创建的在主函数里完成的,各弹出窗口及相应的功能是在相应的事件中完成的。
actionPerformed方法中实现对文件的打开、保存、退出操作,mousePressed方法实现鼠标在文本区中的剪切、复制、粘贴操作。
三.详细设计
1.程序运行流程图:
2.完整源代码及简要注释
importjavax.swing.*;
importjava.awt.*;
importjava.io.*;
importjava.awt.event.*;
publicclassMyEditextendsJFrameimplementsActionListener,MouseListener{
//定义变量
JMenuItemopen=newJMenuItem("打开"),save=newJMenuItem("保存"),exit=newJMenuItem("退出"),
bg=newJMenuItem("背景颜色"),small=newJMenuItem("小"),middle=newJMenuItem("中"),big=newJMenuItem("大"),
cg=newJMenuItem("倾斜并加粗"),qx=newJMenuItem("倾斜"),jc=newJMenuItem("加粗");
JMenufile=newJMenu("文件"),edit=newJMenu("编辑"),mode=newJMenu("格式"),size=newJMenu("字体大小"),help=newJMenu("帮助");
JMenuBarjmb=newJMenuBar();
JTextAreaarea=newJTextArea();
JPopupMenupm=newJPopupMenu();
JMenuItemcopy=newJMenuItem("复制"),cut=newJMenuItem("剪切"),paste=newJMenuItem("粘贴");
publicMyEdit(){
super("文本编辑器");
setVisible(true);
setBounds(200,200,400,400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//添加监听
cg.addActionListener(this);
qx.addActionListener(this);
jc.addActionListener(this);
bg.addActionListener(this);
size.addActionListener(this);
small.addActionListener(this);
middle.addActionListener(this);
big.addActionListener(this);
save.addActionListener(this);
open.addActionListener(this);
area.addMouseListener(this);
copy.addActionListener(this);
cut.addActionListener(this);
paste.addActionListener(this);
//加入组件
size.add(small);size.add(middle);size.add(big);
file.add(open);file.add(save);file.add(exit);
mode.add(cg);mode.add(qx);mode.add(jc);
edit.add(bg);edit.add(mode);edit.add(size);
jmb.add(file);jmb.add(edit);jmb.add(help);
pm.add(copy);pm.add(cut);pm.add(paste);
setJMenuBar(jmb);
add(area);
validate();
}
publicvoidactionPerformed(ActionEventae)
{
if(ae.getSource()==save)
{try{
JFileChooserjfc=newJFileChooser();
intmychoose=jfc.showSaveDialog(this);
if(mychoose==jfc.APPROVE_OPTION)
{
Filefile=jfc.getSelectedFile();
FileOutputStreamfos=newFileOutputStream(file);
byte[]b=area.getText().getBytes();
fos.write(b,0,b.length);
fos.close();}}catch(Exceptione){e.printStackTrace();}
}
elseif(ae.getSource()==open)
{try{
JFileChooserjfc=newJFileChooser();
intmychoose=jfc.showOpenDialog(this);
if(mychoose==jfc.APPROVE_OPTION)
{
Filefile=jfc.getSelectedFile();
FileInputStreamfis=newFileInputStream(file);
byte[]b=newbyte[200];
intlen;
while((len=fis.read(b))!
=-1)
area.append(newString(b,0,len));
fis.close();
}}catch(Exceptione){e.printStackTrace();
}
}
elseif(ae.getSource()==copy)
area.copy();
elseif(ae.getSource()==cut)
area.cut();
elseif(ae.getSource()==paste)
area.paste();
elseif(ae.getSource()==bg)
{
ColornewColor=JColorChooser.showDialog(this,"调色板",area.getBackground());
if(newColor!
=null)
area.setBackground(newColor);
}
elseif(ae.getSource()==exit)
{
System.exit(0);
}
elseif(ae.getSource()==cg)
{
Fontfont=area.getFont();
intstyle=font.getStyle();
style=style^3;
area.setFont(newFont("",style,font.getSize()));
}
elseif(ae.getSource()==qx)
{
Fontfont=area.getFont();
intstyle=font.getStyle();
style=style^2;
area.setFont(newFont("",style,font.getSize()));
}
elseif(ae.getSource()==jc)
{
Fontfont=area.getFont();
intstyle=font.getStyle();
style=style^1;
area.setFont(newFont("",style,font.getSize()));
}
elseif(ae.getSource()==small)
{
Fontfont=area.getFont();
intstyle=font.getStyle();
area.setFont(newFont(font.getName(),style,12));
}
elseif(ae.getSource()==middle)
{
Fontfont=area.getFont();
intstyle=font.getStyle();
area.setFont(newFont(font.getName(),style,24));
}
elseif(ae.getSource()==big)
{
Fontfont=area.getFont();
intstyle=font.getStyle();
area.setFont(newFont(font.getName(),style,36));
}
}
publicvoidmouseReleased(MouseEventme){}
publicvoidmouseEntered(MouseEventme){}
publicvoidmouseExited(MouseEventme){}
publicvoidmouseClicked(MouseEventme){}
publicvoidmousePressed(MouseEventme){
if(me.getModifiers()==InputEvent.BUTTON3_MASK)
{pm.show(area,me.getX(),me.getY());}}
//主函数,程序入口
publicstaticvoidmain(String[]args){
newMyEdit()
}
}
3.简要设计思路
首先创建一个窗体,在窗体中添加打开、保存、退出菜单项,实现对文件的操作;其次,在窗体中添加一个文本区,用来显示打开的文件中的内容;还需要添加一个弹出式菜单,包括剪切、复制、粘贴功能,实现对文本区中的内容进行相应的操作。
四.程序截图说明
1.主窗口界面:
该界面有三个菜单和一个文本区,当点击菜单”文件”时,有三个菜单项”打开、关闭、退出”可供做相应的操作,当点击“编辑”时,有“背景颜色、格式、字体大小”三个可操作,三个操作中也有对应的选项和界面,“帮助”菜单没有任何实际操作。
2.文件下的打开界面
点击打开菜单项,可实现对文件的打开。
3.文件下的保存界面
点击保存可实现对文本区的内容进行保存。
4.编辑下的背景颜色界面
在这里可以根据个人喜好改变文本区的背景颜色。
5.编辑下的格式界面
在这里选择相信的格式,文本区的文字便会改变成那个格式。
6.编辑下的字体大小
在这里,选择字体大小,对文本区的字体大小进行改变。
6.文本区中的右键操作
点击鼠标右键,弹出式菜单弹出,点击剪切、复制、粘贴菜单式可实现相应的功能。
五.分析总结:
1.出现问题及解决办法:
其中事件监听时出现了一点问题,使用addMouseListener()对鼠标在文本区中单击时弹出式菜单的显示,开始时总是显示不出来,后来通过查资料、问老师解决出来了。
2.方法优缺点分析:
优点:
界面干净,操作简单,可对任意文件进行编辑。
缺点:
功能较少。
六.致谢:
紧张的课程设计结束了,虽然时间紧迫,但是由于以前做过部分,所以剩下的工作倒是不难,就是要写较多的代码,感谢指导老师前期的指导和提供部分代码以及后期对程序的完善提出的修改意见。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 简易 文本编辑