Java程序设计实验分析报告文本编辑器的设计与实现.docx

上传人:b****6 文档编号:5172202 上传时间:2022-12-13 格式:DOCX 页数:13 大小:63.77KB
下载 相关 举报
Java程序设计实验分析报告文本编辑器的设计与实现.docx_第1页
第1页 / 共13页
Java程序设计实验分析报告文本编辑器的设计与实现.docx_第2页
第2页 / 共13页
Java程序设计实验分析报告文本编辑器的设计与实现.docx_第3页
第3页 / 共13页
Java程序设计实验分析报告文本编辑器的设计与实现.docx_第4页
第4页 / 共13页
Java程序设计实验分析报告文本编辑器的设计与实现.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

Java程序设计实验分析报告文本编辑器的设计与实现.docx

《Java程序设计实验分析报告文本编辑器的设计与实现.docx》由会员分享,可在线阅读,更多相关《Java程序设计实验分析报告文本编辑器的设计与实现.docx(13页珍藏版)》请在冰豆网上搜索。

Java程序设计实验分析报告文本编辑器的设计与实现.docx

Java程序设计实验分析报告文本编辑器的设计与实现

Java程序设计实验报告-文本编辑器的设计与实现

 

 

————————————————————————————————作者:

————————————————————————————————日期:

 

Java程序设计实验报告

学生姓名:

邵强

学号:

0706550222

课程编号:

06021801-0

实验名称:

文本编辑器的设计与实现

实验内容:

设计与实现一个文本编辑器,要求具有方便的图形用户界面,包括标题栏、菜单栏,菜单栏有相关的菜单和菜单项,有快捷键,具有编辑、打开、保存、复制、粘贴等功能(详细功能要求通过运行提供的字节码文件来确定,主类是JNotePadUI)。

完成有关类的设计,并调试运行,给出有代表性的程序输出结果(程序运行截图)。

程序代码如下:

packagenote;

importjava.awt.*;

importjava.awt.event.*;

importjava.io.File;

importjava.io.FileInputStream;

importjava.io.FileNotFoundException;

importjava.io.FileOutputStream;

importjava.io.FileWriter;

importjava.io.IOException;

importjava.io.*;

importjavax.swing.*;

publicclassMynoteextendsJFrameimplementsActionListener{

JMenumenuFile;JMenumenuEdit;JMenumenuAbout;

JPopupMenupopUpMenu;

JTextAreatxt=null;//编辑区

JLabellab=newJLabel("未修改");

JFileChooserfileChooser=newJFileChooser();

FilesaveFileName=null,fileName=null;

publicMynote(Strings)

{

super(s);

createMenuBar();//菜单栏

createContentPane();//文本编辑区组件

setBounds(100,100,600,450);

addWindowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEvente)

{closeFile();}});

setVisible(true);}

publicvoidcreateMenuBar(){

JMenuBarmenuBar=newJMenuBar();

menuFile=newJMenu("文件");

menuEdit=newJMenu("编辑");

menuAbout=newJMenu("关于");

menuBar.add(menuFile);

menuBar.add(menuEdit);

menuBar.add(menuAbout);

JMenuItemitemOpen=newJMenuItem("打开");

menuFile.add(itemOpen);

itemOpen.addActionListener(this);

menuFile.addSeparator();

JMenuItemitemSave=newJMenuItem("保存");

menuFile.add(itemSave);

itemSave.addActionListener(this);

JMenuItemitemSaveas=newJMenuItem("另存为");

menuFile.add(itemSaveas);

itemSaveas.addActionListener(this);

menuFile.addSeparator();

JMenuItemitemQuit=newJMenuItem("关闭");

menuFile.add(itemQuit);

itemQuit.addActionListener(this);

JMenuItemitemCut=newJMenuItem("剪切");

menuEdit.add(itemCut);

itemCut.addActionListener(this);

JMenuItemitemCopy=newJMenuItem("复制");

menuEdit.add(itemCopy);

itemCopy.addActionListener(this);

JMenuItemitemPaste=newJMenuItem("粘贴");

menuEdit.add(itemPaste);

itemPaste.addActionListener(this);

JMenuItemitemAboutnote=newJMenuItem("关于NotePad");

menuAbout.add(itemAboutnote);

itemAboutnote.addActionListener(this);

//右键菜单

JMenuItemCopyitem=newJMenuItem("复制");

Copyitem.addActionListener(this);

JMenuItemCutitem=newJMenuItem("剪切");

Cutitem.addActionListener(this);

JMenuItemPasteitem=newJMenuItem("粘贴");

Pasteitem.addActionListener(this);

popUpMenu=newJPopupMenu();

popUpMenu.add(Copyitem);

popUpMenu.add(Cutitem);

popUpMenu.add(Pasteitem);

//快捷键itemOpen.setAccelerator(KeyStroke.getKeyStroke('O',Event.CTRL_MASK,false));itemSave.setAccelerator(KeyStroke.getKeyStroke('S',Event.CTRL_MASK,false));

itemSaveas.setAccelerator(KeyStroke.getKeyStroke('A',Event.CTRL_MASK,false));

itemQuit.setAccelerator(KeyStroke.getKeyStroke('Q',Event.CTRL_MASK,false));

itemCut.setAccelerator(KeyStroke.getKeyStroke('X',Event.CTRL_MASK,false));

itemCopy.setAccelerator(KeyStroke.getKeyStroke('C',Event.CTRL_MASK,false));

itemPaste.setAccelerator(KeyStroke.getKeyStroke('V',Event.CTRL_MASK,false));

setJMenuBar(menuBar);

}

privatebooleanisChanged()

{

if(lab.getText().equals("未修改"))

returnfalse;

elsereturntrue;

}

publicvoidactionPerformed(ActionEvente)

{

intoption=-1;

if(e.getActionCommand().equals("打开"))option=0;

if(e.getActionCommand().equals("保存"))option=1;

if(e.getActionCommand().equals("另存为"))option=2;

if(e.getActionCommand().equals("关闭"))option=3;

if(e.getActionCommand().equals("剪切"))option=4;

if(e.getActionCommand().equals("复制"))option=5;

if(e.getActionCommand().equals("粘贴"))option=6;

if(e.getActionCommand().equals("关于NotePad"))option=7;

switch(option)

{

case0:

{

if(!

isChanged())

{open();}

else

{intoption2=JOptionPane.showConfirmDialog

(this,"文件已修改,是否保存?

","保存文件?

",JOptionPane.YES_NO_OPTION,JOptionPane.WARNING_MESSAGE,null);

switch(option2)

{

caseJOptionPane.YES_OPTION:

saveFile();//保存文件

break;

caseJOptionPane.NO_OPTION:

open();

break;

}

}

break;}

case1:

saveFile();break;

case2:

saveFileAs();break;

case3:

closeFile();break;

case4:

Cut();break;

case5:

Copy();break;

case6:

Paste();break;

case7:

about();break;

default:

break;

}

}

publicvoidcreateContentPane()//文本编辑区组件

{

JScrollPanescrollPane;//滑动条

txt=newJTextArea(10,30);

txt.setEditable(true);

txt.setFont(newFont("宋体",Font.PLAIN,18));

txt.setLineWrap(true);

scrollPane=newJScrollPane(txt);

add(scrollPane,BorderLayout.CENTER);

add(lab,BorderLayout.SOUTH);

txt.addKeyListener(newKeyAdapter(){

publicvoidkeyTyped(KeyEvente)

{lab.setText("已修改");}

});

txt.addMouseListener(newMouseAdapter(){

publicvoidmouseReleased(MouseEvente)

{

if(e.getButton()==MouseEvent.BUTTON3)

popUpMenu.show(e.getComponent(),e.getX(),e.getY());

}

publicvoidmouseClicked(MouseEvente)

{

if(e.getButton()==MouseEvent.BUTTON1)

popUpMenu.setVisible(false);

}

});

}

privatevoidopen()

{

intoption=fileChooser.showOpenDialog(this);

if(option==JFileChooser.APPROVE_OPTION)

{try

{//打开所选文件

BufferedReaderbuf=newBufferedReader(newFileReader(fileChooser.getSelectedFile()));

//设置文件标题

setTitle(fileChooser.getSelectedFile().toString());

//删除前一次文件

txt.setText("");

//设置状态栏

lab.setText("未修改");

//取得系统相依的换行符

StringlineSeparator=System.getProperty("line.separator");

//读取文件并附加至文字编辑区

Stringtext;

while((text=buf.readLine())!

=null)

{

txt.append(text);

txt.append(lineSeparator);

}

buf.close();

}

catch(IOExceptione)

{

JOptionPane.showMessageDialog

(this,e.toString(),"打开文件失败",JOptionPane.ERROR_MESSAGE);}}

}

privatevoidsaveFile()

{

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

Filefile=newFile(getTitle());

//若指定文件不存在

if(!

(file.exists()))

{saveFileAs();}

else

{try

{//打开指定文件

BufferedWriterbuf=newBufferedWriter(newFileWriter(file));

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

buf.write(txt.getText());

buf.close();

//设置状态栏为未修改

lab.setText("未修改");

}

catch(IOExceptione)

{

JOptionPane.showMessageDialog

(this,e.toString(),"写入文件失败",JOptionPane.ERROR_MESSAGE);}

}

}

privatevoidsaveFileAs()

{//显示对话框

intoption3=fileChooser.showSaveDialog(this);

//如果确认选择文件

if(option3==JFileChooser.APPROVE_OPTION)

{//取得选择的文件

Filefile=fileChooser.getSelectedFile();

//在标题栏上设置文件名称

setTitle(file.toString());

try

{//建立文件

file.createNewFile();

//进行文件保护

saveFile();

}

catch(IOExceptione)

{JOptionPane.showMessageDialog(this,e.toString(),"无法建立文件",JOptionPane.ERROR_MESSAGE);

}

}

}

privatevoidcloseFile()

{

//是否已保存文件

if(!

isChanged())dispose();

else

{

intoption=JOptionPane.showConfirmDialog

(this,"文件已修改,是否保存?

","保存文件?

",

JOptionPane.YES_NO_OPTION,JOptionPane.WARNING_MESSAGE,null);

switch(option)

{

caseJOptionPane.YES_NO_OPTION:

saveFile();

caseJOptionPane.NO_OPTION:

dispose();

}

}

}

privatevoidCut()

{

txt.cut();

lab.setText("已修改");

popUpMenu.setVisible(false);

}

privatevoidCopy()

{

txt.copy();

popUpMenu.setVisible(false);

}

privatevoidPaste()

{

txt.paste();

lab.setText("已修改");

popUpMenu.setVisible(false);

}

privatevoidabout()

{

//显示对话框

JOptionPane.showOptionDialog(this,"程序名称\n"+"JNotePad\n"+

"简介:

\n"+"一个简单的文字编辑器\n",

"关于JNotePad",JOptionPane.DEFAULT_OPTION,

JOptionPane.INFORMATION_MESSAGE,null,null,null);

}

publicstaticvoidmain(Stringargs[]){

newMynote("陆庆庆0706550220");

}

}

程序有代表性的输出结果及结果分析:

这是其中的几个画面截图。

这段程序可以执行简单的文字编辑,包括:

打开,保存,另存为,

关闭,复制,粘贴,剪切和关于,同时可以右键菜单和有状态栏。

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

当前位置:首页 > 高等教育 > 院校资料

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

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