JAVA程序设计题 文本编辑器设计资料.docx

上传人:b****5 文档编号:12390224 上传时间:2023-04-18 格式:DOCX 页数:12 大小:16.79KB
下载 相关 举报
JAVA程序设计题 文本编辑器设计资料.docx_第1页
第1页 / 共12页
JAVA程序设计题 文本编辑器设计资料.docx_第2页
第2页 / 共12页
JAVA程序设计题 文本编辑器设计资料.docx_第3页
第3页 / 共12页
JAVA程序设计题 文本编辑器设计资料.docx_第4页
第4页 / 共12页
JAVA程序设计题 文本编辑器设计资料.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

JAVA程序设计题 文本编辑器设计资料.docx

《JAVA程序设计题 文本编辑器设计资料.docx》由会员分享,可在线阅读,更多相关《JAVA程序设计题 文本编辑器设计资料.docx(12页珍藏版)》请在冰豆网上搜索。

JAVA程序设计题 文本编辑器设计资料.docx

JAVA程序设计题文本编辑器设计资料

JAVA程序设计题:

文本编辑器设计

【问题描述】

实现类似Windows操作系统“记事本”的功能。

它是一个简单的文本文档编辑器,可以创建、查看或编辑文本文件。

【实验目的】

要求学生能熟练使用基于Swing的GUI设计,熟练使用常用组件和容器,理解java事件处理机制,会查看APIdocumentation完成设计任务,熟练文件流的操作。

【基本功能】

设计一个文本编辑器,通过菜单组件可以创建、查看或编辑文本文件。

增加对文件的存贮、剪切和黏贴等功能

功能的其他扩展

packagecom.huangyilun.work;

importjava.awt.*;

importjava.awt.event.*;

importjava.io.File;

importjava.io.FileInputStream;

importjava.io.FileWriter;

importjavax.swing.*;

publicclassNotice_B08010332extendsJFrame{

publicstaticvoidmain(String[]args){

newNotice_B08010332();

}

publicNotice_B08010332(){

super("新建文本文件");

setUpUIComponent();

setUpEventListener();

setVisible(true);

this.showForm();

}

privatevoidshowForm(){

//侦听窗口关闭操作

setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

addWindowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEvente){

dispose();

System.exit(0);

}

});

}

privatevoidsetUpUIComponent(){

setSize(640,480);

//菜单栏

JMenuBarmenuBar=newJMenuBar();

//设置「文件」菜单

JMenufileMenu=newJMenu("文件");

menuOpen=newJMenuItem("打开");

//快捷键设置

menuOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,

InputEvent.CTRL_MASK));

menuSave=newJMenuItem("保存");

menuSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,

InputEvent.CTRL_MASK));

menuSaveAs=newJMenuItem("另存为");

menuClose=newJMenuItem("关闭");

menuClose.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q,

InputEvent.CTRL_MASK));

fileMenu.add(menuOpen);

fileMenu.addSeparator();//分隔线

fileMenu.add(menuSave);

fileMenu.add(menuSaveAs);

fileMenu.addSeparator();//分隔线

fileMenu.add(menuClose);

//设置「编辑」菜单

JMenueditMenu=newJMenu("编辑");

menuCut=newJMenuItem("剪切");

menuCut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,

InputEvent.CTRL_MASK));

menuCopy=newJMenuItem("复制");

menuCopy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,

InputEvent.CTRL_MASK));

menuPaste=newJMenuItem("粘贴");

menuPaste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,

InputEvent.CTRL_MASK));

editMenu.add(menuCut);

editMenu.add(menuCopy);

editMenu.add(menuPaste);

menuBar.add(fileMenu);

menuBar.add(editMenu);

setJMenuBar(menuBar);

//文字编辑区域

textArea=newJTextArea();

textArea.setFont(newFont("宋体",Font.PLAIN,16));

textArea.setLineWrap(true);

JScrollPanepanel=newJScrollPane(textArea,

ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,

ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);

ContainercontentPane=getContentPane();

contentPane.add(panel,BorderLayout.CENTER);

//状态栏

stateBar=newJLabel("未修改");

stateBar.setHorizontalAlignment(SwingConstants.LEFT);

stateBar.setBorder(BorderFactory.createEtchedBorder());

contentPane.add(stateBar,BorderLayout.SOUTH);

popUpMenu=editMenu.getPopupMenu();

}

privatevoidsetUpEventListener(){

//按下窗口关闭钮事件处理

addWindowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEvente){

closeFile();

}

});

//菜单-打开

menuOpen.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

openFile();

}

});

//菜单-保存

menuSave.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

saveFile();

}

});

//菜单-另存为

menuSaveAs.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

saveFileAs();

}

});

//菜单-关闭文件

menuClose.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

closeFile();

}

});

//菜单-剪切

menuCut.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

cut();

}

});

//菜单-复制

menuCopy.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

copy();

}

});

//菜单-粘贴

menuPaste.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

paste();

}

});

//编辑区键盘事件

textArea.addKeyListener(newKeyAdapter(){

publicvoidkeyTyped(KeyEvente){

processTextArea();

}

});

//编辑区鼠标事件

textArea.addMouseListener(newMouseAdapter(){

publicvoidmouseReleased(MouseEvente){

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

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

}

publicvoidmouseClicked(MouseEvente){

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

popUpMenu.setVisible(false);

}

});

}

privatevoidopenFile(){

if(isCurrentFileSaved()){//文件是否为保存状态

open();//打开

}else{

//显示对话框

intoption=JOptionPane.showConfirmDialog(null,"文件已修改,是否保存?

",

"保存文件?

",JOptionPane.YES_NO_OPTION,

JOptionPane.WARNING_MESSAGE,null);

switch(option){

//确认文件保存

caseJOptionPane.YES_OPTION:

saveFile();//保存文件

break;

//放弃文件保存

caseJOptionPane.NO_OPTION:

open();

break;

}

}

}

privatebooleanisCurrentFileSaved(){

if(stateBar.getText().equals("未修改")){

returntrue;

}else{

returnfalse;

}

}

privatevoidopen(){

JFileChooserchooser=newJFileChooser();

chooser.showOpenDialog(this);

Filefile=chooser.getSelectedFile();

currFile=file;

Stringstr="";

try{

FileInputStreamfileinput=newFileInputStream(file.getAbsolutePath());

intx=fileinput.available();

byteb[]=newbyte[x];

fileinput.read(b);

str=newString(b);

}catch(Exceptione){

e.printStackTrace();

}

if(file!

=null)

this.textArea.setText(str);

}

privatevoidsaveFile(){

Stringstr=this.textArea.getText();

if(currFile!

=null&&!

currFile.equals("")){

try{

FileWriterout=newFileWriter(currFile);

out.write(str);

out.close();

}catch(Exceptione){

e.printStackTrace();

}

}else{

saveFileAs();

}

stateBar.setText("已保存");

}

privatevoidsaveFileAs(){

JFileChooserchooser=newJFileChooser();

chooser.showOpenDialog(this);

Filefile=chooser.getSelectedFile();

currFile=file;

Stringstr=this.textArea.getText();

if(currFile!

=null&&!

currFile.equals("")){

try{

FileWriterout=newFileWriter(currFile);

out.write(str);

out.close();

}catch(Exceptione){

e.printStackTrace();

}

}

stateBar.setText("已保存");

}

privatevoidcloseFile(){

//是否已保存文件

if(isCurrentFileSaved()){

//释放窗口资源,而后关闭程序

dispose();

}else{

intoption=JOptionPane.showConfirmDialog(null,"文件已修改,是否保存?

",

"保存文件?

",JOptionPane.YES_NO_OPTION,

JOptionPane.WARNING_MESSAGE,null);

switch(option){

caseJOptionPane.YES_OPTION:

saveFile();

break;

caseJOptionPane.NO_OPTION:

dispose();

}

}

}

privatevoidcut(){

textArea.cut();

stateBar.setText("已修改");

popUpMenu.setVisible(false);

}

privatevoidcopy(){

textArea.copy();

popUpMenu.setVisible(false);

}

privatevoidpaste(){

textArea.paste();

stateBar.setText("已修改");

popUpMenu.setVisible(false);

}

privatevoidprocessTextArea(){

stateBar.setText("已修改");

}

privateJMenuItemmenuOpen;

privateJMenuItemmenuSave;

privateJMenuItemmenuSaveAs;

privateJMenuItemmenuClose;

privateJMenueditMenu;

privateJMenuItemmenuCut;

privateJMenuItemmenuCopy;

privateJMenuItemmenuPaste;

privateJTextAreatextArea;

privateJLabelstateBar;

privateJPopupMenupopUpMenu;

privateFilecurrFile;

}

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

当前位置:首页 > PPT模板 > 卡通动漫

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

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