Java设计记事本.docx
- 文档编号:12692362
- 上传时间:2023-04-21
- 格式:DOCX
- 页数:29
- 大小:224.96KB
Java设计记事本.docx
《Java设计记事本.docx》由会员分享,可在线阅读,更多相关《Java设计记事本.docx(29页珍藏版)》请在冰豆网上搜索。
Java设计记事本
安徽师范大学
数计学院实验报告
专业名称11计科
课程JAVA高级程序设计
实验名称综合练习1
姓名
学号110704012
一、实验目的
选择两个项目之一,全面深入掌握前6章内容
二、实验内容
1.设计一个记事本(最大程度近似windowsxp附件中记事本功能)。
2.设计一个绘图软件(最大程度近似windowsxp附件中的画图功能)
三、实验过程和步骤
(作业要求:
程序源码及运行结果截图,要对源码充分注释,将程序功能分解在不同的类中,说明不同类的功能,说明类的成员变量与成员方法功能)
实验代码:
notepad.java
importjava.awt.BorderLayout;
importjava.awt.Event;
importjava.awt.FileDialog;
importjava.awt.Font;
importjava.awt.ScrollPane;
importjava.awt.datatransfer.Clipboard;
importjava.awt.datatransfer.DataFlavor;
importjava.awt.datatransfer.StringSelection;
importjava.awt.datatransfer.Transferable;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.KeyEvent;
importjava.awt.event.MouseAdapter;
importjava.awt.event.MouseEvent;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent;
importjava.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.File;
importjava.io.FileReader;
importjava.io.FileWriter;
importjava.io.IOException;
importjava.text.SimpleDateFormat;
importjava.util.Calendar;
importjavax.swing.JCheckBoxMenuItem;
importjavax.swing.JFrame;
importjavax.swing.JMenu;
importjavax.swing.JMenuBar;
importjavax.swing.JMenuItem;
importjavax.swing.JOptionPane;
importjavax.swing.JPopupMenu;
importjavax.swing.JTextArea;
importjavax.swing.KeyStroke;
importjavax.swing.event.DocumentEvent;
importjavax.swing.event.DocumentListener;
importjavax.swing.event.UndoableEditEvent;
importjavax.swing.event.UndoableEditListener;
importjavax.swing.undo.UndoManager;
publicclassnotepadextendsJFrameimplementsActionListener,DocumentListener,
UndoableEditListener{
JFramef=newJFrame("记事本");
ScrollPanejsp=newScrollPane();
JPopupMenupop=newJPopupMenu();
JTextAreata=newJTextArea();
JOptionPanejop=newJOptionPane();
UndoManagerum=newUndoManager();
JMenuBarbar=newJMenuBar();
JMenufile=newJMenu("文件");
JMenuedit=newJMenu("编辑");
JMenuformat=newJMenu("格式");
JMenulook=newJMenu("查看");
JMenuhelp=newJMenu("帮助");
JMenuItemnewFile=newJMenuItem("新建");
JMenuItemopen=newJMenuItem("打开");
JMenuItemsave=newJMenuItem("保存");
JMenuItemsaveNew=newJMenuItem("另存为");
JMenuItemexit=newJMenuItem("退出");
JMenuItemback=newJMenuItem("撤销");
JMenuItemcut=newJMenuItem("剪切");
JMenuItemcopy=newJMenuItem("复制");
JMenuItempaste=newJMenuItem("粘贴");
JMenuItemdel=newJMenuItem("删除");
JMenuItemselt=newJMenuItem("查找");
JMenuItemrep=newJMenuItem("替换");
JMenuItemall=newJMenuItem("全选");
JMenuItemdate=newJMenuItem("日期");
JCheckBoxMenuItemautoLine=newJCheckBoxMenuItem("自动换行",true);
JCheckBoxMenuItemstatus=newJCheckBoxMenuItem("状态栏",true);
JMenuItemsHelp=newJMenuItem("查看帮助");
JMenuItemabout=newJMenuItem("关于");
JMenuItemback1=newJMenuItem("撤销");
JMenuItemcut1=newJMenuItem("剪切");
JMenuItemcopy1=newJMenuItem("复制");
JMenuItempaste1=newJMenuItem("粘贴");
JMenuItemdel1=newJMenuItem("删除");
JMenuItemall1=newJMenuItem("全选");
FileDialogopenDia=newFileDialog(f,"打开",FileDialog.LOAD);
FileDialogsaveDia=newFileDialog(f,"保存",FileDialog.SAVE);
dialogprompt;
aboutFileprompta;
Filefe;
Clipboardclipboard=null;
booleanisSave,change,isLine;
Stringselect;
publicnotepad(){
isSave=false;
change=false;
isLine=true;
setup();
f.addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEventwe){
if((isSave==false)&&(change==true)){
dialogdg=newdialog(f,"记事本",true);
}else
System.exit(0);
}
});
ta.setFont(newFont("宋体",0,20));
ta.setLineWrap(true);
pack();
f.setBounds(150,100,650,550);
f.setVisible(true);
}
publicvoidsetup(){
setLayout(newBorderLayout());
f.setJMenuBar(bar);
jsp.add(ta);
f.add(jsp);
bar.add(file);
bar.add(edit);
bar.add(format);
bar.add(look);
bar.add(help);
file.add(newFile);
file.add(open);
file.add(save);
file.add(saveNew);
file.addSeparator();
file.add(exit);
edit.add(back);
edit.addSeparator();
edit.add(cut);
edit.add(copy);
edit.add(paste);
edit.add(del);
edit.addSeparator();
edit.add(selt);
edit.add(rep);
edit.addSeparator();
edit.add(all);
edit.addSeparator();
edit.add(date);
format.add(autoLine);
look.add(status);
help.add(sHelp);
help.add(about);
pop.add(back1);
pop.addSeparator();
pop.add(cut1);
pop.add(copy1);
pop.add(paste1);
pop.add(del1);
pop.addSeparator();
pop.add(all1);
newFile.setMnemonic('N');
newFile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,Event.CTRL_MASK));
open.setMnemonic('O');
open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,Event.CTRL_MASK));
save.setMnemonic('S');
save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,Event.CTRL_MASK));
saveNew.setMnemonic('A');
saveNew.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,Event.SHIFT_MASK));
exit.setMnemonic('X');
exit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,Event.SHIFT_MASK));
back.setMnemonic('Z');
back.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,Event.CTRL_MASK));
cut.setMnemonic('X');
cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,Event.CTRL_MASK));
copy.setMnemonic('C');
copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,Event.CTRL_MASK));
paste.setMnemonic('V');
paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,Event.CTRL_MASK));
del.setMnemonic('L');
del.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE,0));
selt.setMnemonic('F');
selt.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,Event.CTRL_MASK));
rep.setMnemonic('H');
rep.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H,Event.CTRL_MASK));
all.setMnemonic('A');
all.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,Event.CTRL_MASK));
date.setMnemonic('D');
date.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F5,0));
autoLine.setMnemonic('W');
autoLine.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W,Event.SHIFT_MASK));
status.setMnemonic('S');
status.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,Event.SHIFT_MASK));
sHelp.setMnemonic('H');
sHelp.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H,Event.SHIFT_MASK));
about.setMnemonic('B');
about.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B,Event.SHIFT_MASK));
back1.setMnemonic('Z');
back1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,Event.CTRL_MASK));
cut1.setMnemonic('X');
cut1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,Event.CTRL_MASK));
copy1.setMnemonic('C');
copy1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,Event.CTRL_MASK));
paste1.setMnemonic('V');
paste1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,Event.CTRL_MASK));
del1.setMnemonic('L');
del1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE,0));
all1.setMnemonic('A');
all1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,Event.CTRL_MASK));
newFile.addActionListener(this);
open.addActionListener(this);
save.addActionListener(this);
saveNew.addActionListener(this);
exit.addActionListener(this);
back.addActionListener(this);
cut.addActionListener(this);
copy.addActionListener(this);
paste.addActionListener(this);
del.addActionListener(this);
selt.addActionListener(this);
rep.addActionListener(this);
all.addActionListener(this);
date.addActionListener(this);
autoLine.addActionListener(this);
status.addActionListener(this);
about.addActionListener(this);
sHelp.addActionListener(this);
back1.addActionListener(this);
cut1.addActionListener(this);
copy1.addActionListener(this);
paste1.addActionListener(this);
del1.addActionListener(this);
all1.addActionListener(this);
ta.getDocument().addDocumentListener(this);
ta.getDocument().addUndoableEditListener(this);
ta.addMouseListener(newMouseAdapter(){
publicvoidmousePressed(MouseEventme){
if(me.getButton()==me.BUTTON3){
pop.show(ta,me.getX(),me.getY());
}
}
});
}
publicvoidopenFile(){
openDia.setVisible(true);
StringdirPath=openDia.getDirectory();
StringfileName=openDia.getFile();
if(dirPath==null||fileName==null)
return;
ta.setText("");
fe=newFile(dirPath,fileName);
try{
BufferedReaderin=newBufferedReader(newFileReader(fe));
Stringline=null;
while((line=in.readLine())!
=null)
ta.append(line+"\r\n");
in.close();
ta.setCaretPosition(0);
}catch(IOExceptionioe){
System.err.println(ioe);
}
}
publicvoidsaveFile(){
if(fe==null){
saveDia.setVisible(true);
StringdirPath=openDia.getDirectory();
StringfileName=openDia.getFile();
if(dirPath==null||fileName==null)
return;
ta.setText("");
Filefe=newFile(dirPath,fileName);
}
isSave=true;
change=false;
try{
BufferedWriterout=newBufferedWriter(newFileWriter(fe));
Stringtext=ta.getText();
out.write(text);
out.flush();
out.close();
}catch(IOExceptionioe){
System.err.println(ioe);
}
}
publicvoidundoableEditHappened(UndoableEditEventue){
um.addEdit(ue.getEdit());
}
publicvoidchangedUpdate(DocumentEvente){
change=true;
}
publicvoidinsertUpdate(DocumentEvente){
change=true;
}
publicvoidremoveUpdate(DocumentEvente){
change=true;
}
publicvoidactionPerformed(ActionEventae){
if(ta.getText().equals(""))
change=false;
if(ae.getSour
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 设计 记事本