java 简单记事本编辑设计 5.docx
《java 简单记事本编辑设计 5.docx》由会员分享,可在线阅读,更多相关《java 简单记事本编辑设计 5.docx(14页珍藏版)》请在冰豆网上搜索。
java简单记事本编辑设计5
GDOU-B-11-112
广东海洋大学学生实验报告书(学生用表)
实验名称
简单记事本编辑设计
课程名称
Java实验课
课程号
学院(系)
数学与计算机学院
专业
计算机科学与技术
班级
计科11XX
学生姓名
林XX
学号
20151162XXXX
实验地点
钟04002
实验日期
2017/11/16
一、实验目的:
熟悉Swing组件及相关方法:
掌握常用Swing组件的菜单的使用方法、组件的事件监听方法以及主要布局管理器的使用。
本实验需4学时
二、实验内容:
编写如下图的一个记事本,并可实现图中列出的功能。
答:
源码
//importjava.awt.FileDialog;
//importjava.awt.event.ActionEvent;
//importjava.awt.event.ActionListener;
importjava.awt.event.*;
importjava.awt.*;
//importjava.awt.event.KeyEvent;
importjava.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.File;
importjava.nio.file.*;
importjava.io.FileReader;
importjava.io.FileWriter;
importjava.io.IOException;
importjavax.swing.*;
publicclassNotePadDemoextendsJFrameimplementsActionListener{
JMenuBarmenubar;
JMenumenu1,menu2,menu3,menu4,menu5;
JMenuItemitem1,item2,item3,item4,item5,item6,item7,item8,item9,item10;
JTextAreaarea;
publicNotePadDemo(){
}
publicNotePadDemo(Strings,intx,inty,inth,intw){
this.setTitle(s);
menubar=newJMenuBar();
menu1=newJMenu("文件");
menu2=newJMenu("编辑");
menu3=newJMenu("格式");
menu4=newJMenu("关于");
item1=newJMenuItem("新建");
item2=newJMenuItem("打开");
item3=newJMenuItem("保存");
item4=newJMenuItem("退出");
item1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK));
item2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));
item3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
item4.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,InputEvent.CTRL_MASK));
menu1.add(item1);
menu1.add(item2);
menu1.add(item3);
menu1.addSeparator();
menu1.add(item4);
item5=newJMenuItem("剪切");
item5.addActionListener(newActionListener(){
@Override
publicvoidactionPerformed(ActionEvente){
area.cut();
}
});
item6=newJMenuItem("复制");
item6.addActionListener(newActionListener(){
@Override
publicvoidactionPerformed(ActionEvente){
area.copy();
}
});
item7=newJMenuItem("粘贴");
item7.addActionListener(newActionListener(){
@Override
publicvoidactionPerformed(ActionEvente){
area.paste();//粘贴
}
});
item8=newJMenuItem("查找");
item9=newJMenuItem("替换");
item8.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
finalJDialogdialog=newJDialog(NotePadDemo.this,"查找字符串...",true);
dialog.setBounds(560,250,310,130);
JLabelfind=newJLabel("请输入字符串:
");
finalJTextFieldfindtext=newJTextField
(1);
JButtonjbu=newJButton("查找");
dialog.setLayout(null);
find.setBounds(10,30,90,20);
findtext.setBounds(100,30,90,20);
jbu.setBounds(200,30,80,20);
dialog.add(find);
dialog.add(findtext);
dialog.add(jbu);
jbu.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
Stringtext=area.getText();
Stringstr=findtext.getText();
intend=text.length();
intlen=str.length();
intstart=area.getSelectionEnd();
if(start==end){
start=0;
}
for(;start<=end-len;start++){
if(text.substring(start,start+len).equals(str)){
area.setSelectionStart(start);
area.setSelectionEnd(start+len);
return;
}
}
//若找不到待查字符串,则将光标置于末尾
area.setSelectionStart(end);
area.setSelectionEnd(end);
}
});
dialog.addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
dialog.dispose();
}
});
dialog.setResizable(false);
dialog.setVisible(true);
}
});
item9.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
finalJDialogdialog=newJDialog(NotePadDemo.this,"字符串替换...",true);
dialog.setBounds(560,250,310,180);
finalJLabeltihuan=newJLabel("请输入要替换的字符串:
");
JLabelmubiao=newJLabel("请输入替换后的字符串:
");
JTextFieldjtf1=newJTextField(10);
JTextFieldjtf2=newJTextField(10);
JButtonjb=newJButton("替换");
dialog.setLayout(null);
tihuan.setBounds(10,30,150,20);
mubiao.setBounds(10,70,150,20);
jtf1.setBounds(160,30,110,20);
jtf2.setBounds(160,70,110,20);
jb.setBounds(100,110,80,20);
dialog.add(tihuan);
dialog.add(mubiao);
dialog.add(jtf1);
dialog.add(jtf2);
dialog.add(jb);
finalStringtext=area.getText();
finalStringstr1=tihuan.getText();
finalStringstr2=mubiao.getText();
jb.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
if(area.getSelectedText().equals(tihuan.getText())){
area.replaceRange(str2,area.getSelectionStart(),area.getSelectionEnd());
}
else{
intend=text.length();
intlen=str1.length();
intstart=area.getSelectionEnd();
if(start==end)start=0;
for(;start<=end-len;start++){
if(text.substring(start,start+len).equals(str1)){
area.setSelectionStart(start);
area.setSelectionEnd(start+len);
return;
}
}
//若找不到待查字符串,则将光标置于末尾
area.setSelectionStart(end);
area.setSelectionEnd(end);
}
}
});
dialog.setResizable(false);
dialog.setVisible(true);
}
});
item10=newJMenuItem("全选");
item10.addActionListener(newActionListener(){
@Override
publicvoidactionPerformed(ActionEvente){
area.selectAll();
}
});
item5.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));
item6.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));
item7.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK));
item8.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,InputEvent.CTRL_MASK));
item9.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R,InputEvent.CTRL_MASK));
item10.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK));
menu2.add(item5);
menu2.add(item6);
menu2.add(item7);
menu2.add(item8);
menu2.add(item9);
menu2.addSeparator();
menu2.add(item10);
menubar.add(menu1);
menubar.add(menu2);
menubar.add(menu3);
menubar.add(menu4);
this.setJMenuBar(menubar);
item1.addActionListener(this);
item2.addActionListener(this);
item3.addActionListener(this);
item4.addActionListener(this);
item5.addActionListener(this);
item6.addActionListener(this);
item7.addActionListener(this);
item8.addActionListener(this);
item9.addActionListener(this);
item10.addActionListener(this);
area=newJTextArea(6,12);
area.setForeground(Color.WHITE);
area.setBackground(Color.BLACK);
area.setFont(newFont("微软雅黑",Font.PLAIN,24));
area.setLineWrap(true);
this.add(newJScrollPane(area));
this.setLocation(x,y);
this.setSize(w,h);
this.setVisible(true);
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}
publicstaticvoidmain(String[]args){
NotePadDemojsb=newNotePadDemo("记事本",50,50,500,600);
}
@Override
publicvoidactionPerformed(ActionEvente){
//TODOAuto-generatedmethodstub
if(e.getSource()==item1){
area.setText("");
}
if(e.getSource()==item2){
JFileChooserchoose=newJFileChooser();
choose.setDialogTitle("打开");
Filefile;
intresult=choose.showOpenDialog(NotePadDemo.this);
if(result==JFileChooser.APPROVE_OPTION){
area.setText("");
try{
file=choose.getSelectedFile();
StringpathStr=file.getPath();
byte[]b=Files.readAllBytes(Paths.get(pathStr));
//FileReaderfr=newFileReader(file);
//System.out.println("encoding:
"+fr.getEncoding());
//char[]ch=null;
//fr.read(ch);
Stringstr=null;
if(b!
=null)str=newString(b,"UTF-8");
if(str!
=null)area.setText(str);
//BufferedReaderbr=newBufferedReader(fr);
//Stringstr=null;
//while((str=br.readLine())!
=null){
//area.append(str+"\r\n");
//
//}
//设置记事本标题
setTitle(file.getName()+"记事本");
//br.close();
}catch(Exceptionee){
ee.printStackTrace();
}
}
}
if(e.getSource()==item3){
if(area.getText()!
=null&&!
area.getText().equals("")){
JFileChooserchoose=newJFileChooser();
intresult=choose.showSaveDialog(NotePadDemo.this);
if(result==JFileChooser.APPROVE_OPTION){
Filefile;
try{
file=choose.getSelectedFile();
BufferedWriterbw=newBufferedWriter(newFileWriter(file));
bw.write(area.getText());
bw.close();
}catch(IOExceptione1){
e1.printStackTrace();
}
}
}
}
}
}
截图
成绩
指导教师
日期
注:
请用A4纸书写,不够另附纸。
第 页,共 页