记事本源程序.docx
《记事本源程序.docx》由会员分享,可在线阅读,更多相关《记事本源程序.docx(17页珍藏版)》请在冰豆网上搜索。
记事本源程序
importjava.awt.CheckboxMenuItem;
importjava.awt.Color;
importjava.awt.Container;
importjava.awt.FileDialog;
importjava.awt.FlowLayout;
importjava.awt.Font;
importjava.awt.GraphicsEnvironment;
importjava.awt.Menu;
importjava.awt.MenuBar;
importjava.awt.MenuItem;
importjava.awt.MenuShortcut;
importjava.awt.TextArea;
importjava.awt.Toolkit;
importjava.awt.Window;
importjava.awt.datatransfer.Clipboard;
importjava.awt.datatransfer.DataFlavor;
importjava.awt.datatransfer.StringSelection;
importjava.awt.datatransfer.Transferable;
importjava.awt.datatransfer.UnsupportedFlavorException;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.KeyEvent;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent;
importjava.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.File;
importjava.io.FileNotFoundException;
importjava.io.FileReader;
importjava.io.FileWriter;
importjava.io.IOException;
importjava.util.logging.Level;
importjava.util.logging.Logger;
importjavax.swing.JButton;
importjavax.swing.JColorChooser;
importjavax.swing.JComboBox;
importjavax.swing.JDialog;
importjavax.swing.JFileChooser;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JOptionPane;
importjavax.swing.JPanel;
importjavax.swing.JTextField;
publicclassnotebook{
//记事本的具体实现类
privatestaticfinallongserialVersionUID=1L;
privateTextAreacontent;
privateStringfilePath="";//先让路径为空
Colorcolor=Color.red;
ToolkittoolKit=Toolkit.getDefaultToolkit();
Clipboardclipboard=toolKit.getSystemClipboard();
publicnotebook(){
//创建一个JFrame对象;并设置相关属性
finalJFramejf=newJFrame("记事本");
jf.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
jf.setBounds(100,100,500,500);
jf.setResizable(true);
jf.setVisible(true);
//创建菜单栏
MenuBarmenu=newMenuBar();
jf.setMenuBar(menu);
//创建并添加文本框
content=newTextArea("",50,50,TextArea.SCROLLBARS_VERTICAL_ONLY);
jf.add(content);
content.setVisible(true);
content.requestFocusInWindow();
//菜单栏添加内容
Menufilemenu=newMenu("文件");
Menueditmenu=newMenu("编辑");
Menuformatmenu=newMenu("格式");
menu.add(filemenu);
menu.add(editmenu);
menu.add(formatmenu);
//创建文件菜单上的各个菜单项并添加到菜单上
MenuItemnewitem=newMenuItem("新建(N)");
newitem.setShortcut(newMenuShortcut(KeyEvent.VK_N,false));
filemenu.add(newitem);
MenuItemopenitem=newMenuItem("打开(O)");
openitem.setShortcut(newMenuShortcut(KeyEvent.VK_O,false));
filemenu.add(openitem);
MenuItemsaveitem=newMenuItem("保存(S)");
saveitem.setShortcut(newMenuShortcut(KeyEvent.VK_S,false));
filemenu.add(saveitem);
MenuItemsaveasitem=newMenuItem("另存为(A)");
saveasitem.setShortcut(newMenuShortcut(KeyEvent.VK_A,false));
filemenu.add(saveasitem);
filemenu.addSeparator();
MenuItemexititem=newMenuItem("退出(X)");
exititem.setShortcut(newMenuShortcut(KeyEvent.VK_X,false));
filemenu.add(exititem);
//添加监听器来实现文件菜单上的各个菜单项的功能
//新建菜单项的功能实现
newitem.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
Stringcon=content.getText();
if(!
con.equals("")){//文本域里文本不为空
intresult=JOptionPane.showConfirmDialog(
null,("是否要保存?
"),("保存文件..."),JOptionPane.YES_NO_CANCEL_OPTION);
if(result==JOptionPane.NO_OPTION){//不保存
content.setText("");
}
elseif(result==JOptionPane.CANCEL_OPTION){//取消新建
}
elseif(result==JOptionPane.YES_OPTION)//选择保存
{
JFileChooserjfc=newJFileChooser();//用于选择保存路径的文件名
intbcf=jfc.showSaveDialog(jf);
if(bcf==JFileChooser.APPROVE_OPTION){
try{
//保存文件
BufferedWriterbfw=newBufferedWriter(
newFileWriter(newFile(jfc.getSelectedFile().getAbsolutePath()+".txt")));
filePath=jfc.getSelectedFile().getAbsolutePath()+".txt";//获取文件保存的路径
bfw.write(con);//向文件写出数据
bfw.flush();
bfw.close();//关闭输出流
}catch(IOExceptionex){
Logger.getLogger(notebook.class.getName()).log(Level.SEVERE,null,ex);
}
newnotebook();//新建文本文件
}
}
}
}
});
//打开菜单项的功能实现
openitem.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
FileDialogdialog=newFileDialog(newJFrame(),"打开....",FileDialog.LOAD);
dialog.setVisible(true);
filePath=dialog.getDirectory()+dialog.getFile();
System.out.println(filePath);
Filefile=newFile(filePath);
BufferedReaderbr=null;
StringBuildersb=newStringBuilder();
try{
br=newBufferedReader(newFileReader(file));
Stringstr=null;
while((str=br.readLine())!
=null){
sb.append(str).append("\n");
}
content.setText(sb.toString());
}
catch(FileNotFoundExceptione1){
e1.printStackTrace();
}
catch(IOExceptione1){
e1.printStackTrace();
}
finally{
if(br!
=null){
try{
br.close();
}
catch(IOExceptione1){
e1.printStackTrace();
}
}
}
}
});
//保存菜单项的功能实现
saveitem.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
FileDialogdialog=newFileDialog(newJFrame(),"保存....",FileDialog.SAVE);
dialog.setVisible(true);
filePath=dialog.getDirectory()+dialog.getFile();
if(filePath.equals("")){//没有路径时,就另存为
JFileChooserjfc=newJFileChooser();//用于选择保存路径的文件名
intbcf=jfc.showSaveDialog(jf);//弹出保存窗口
if(bcf==JFileChooser.APPROVE_OPTION){
try{
//保存文件
BufferedWriterbfw=newBufferedWriter(
newFileWriter(newFile(jfc.getSelectedFile().getAbsolutePath()+".txt")));
filePath=jfc.getSelectedFile().getAbsolutePath();
bfw.write(content.getText());//向文件写出数据
bfw.flush();
bfw.close();//关闭输出流
}catch(IOExceptionex){
Logger.getLogger(notebook.class.getName()).log(Level.SEVERE,null,ex);
}
}
}
else{//路径不为空时,保存在原来的路径下
try{
//保存文件
BufferedWriterbfw=newBufferedWriter(
newFileWriter(
newFile(filePath)));
bfw.write(content.getText());//向文件写出数据
bfw.flush();
bfw.close();//关闭输出流
}catch(IOExceptionex){
Logger.getLogger(notebook.class.getName()).log(Level.SEVERE,null,ex);
}
}
}
});
//另存为菜单项的功能实现
saveasitem.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
JFileChooserjfc=newJFileChooser();//用于选择保存路径的文件名
intbcf=jfc.showSaveDialog(jf);//弹出保存窗口
if(bcf==JFileChooser.APPROVE_OPTION){
try{
//保存文件
BufferedWriterbfw=newBufferedWriter(
newFileWriter(newFile(jfc.getSelectedFile().getAbsolutePath()+".txt")));
filePath=jfc.getSelectedFile().getAbsolutePath();
bfw.write(content.getText());//向文件写出数据
bfw.flush();
bfw.close();//关闭输出流
}catch(IOExceptionex){
Logger.getLogger(notebook.class.getName()).log(Level.SEVERE,null,ex);
}
}
}
});
//退出菜单项的功能实现
exititem.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
Object[]options={"是的,我要退出","不好意思,点错了"};
intoption=JOptionPane.showOptionDialog(null,"您确定要退出吗?
",
"退出提示....",JOptionPane.OK_CANCEL_OPTION,JOptionPane.WARNING_MESSAGE,
null,options,options[0]);
if(option==JOptionPane.OK_OPTION){
System.exit(0);
}
}
});
//创建编辑菜单上的各个菜单项并添加到菜单上
MenuItemundoitem=newMenuItem("撤销(U)");
undoitem.setShortcut(newMenuShortcut(KeyEvent.VK_Z,false));
editmenu.add(undoitem);
MenuItemcutitem=newMenuItem("剪切(T)");
cutitem.setShortcut(newMenuShortcut(KeyEvent.VK_X,false));
editmenu.add(cutitem);
MenuItemcopyitem=newMenuItem("复制(C)");
copyitem.setShortcut(newMenuShortcut(KeyEvent.VK_C,false));
editmenu.add(copyitem);
MenuItempasteitem=newMenuItem("粘贴(P)");
pasteitem.setShortcut(newMenuShortcut(KeyEvent.VK_V,false));
editmenu.add(pasteitem);
MenuItemdeleteitem=newMenuItem("删除(L)");
deleteitem.setShortcut(newMenuShortcut(KeyEvent.VK_DELETE,false));
editmenu.add(deleteitem);
//添加监听器来实现编辑菜单上的各个菜单项的功能
//撤销菜单项的功能实现
undoitem.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
}
});
//剪切菜单项的功能实现
cutitem.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
Stringtext=content.getSelectedText();
StringSelectionselection=newStringSelection(text);
clipboard.setContents(selection,null);
if(text.length()==0){
return;
}
else{
content.replaceRange("",content.getSelectionStart(),content.getSelectionEnd());
}
}
});
//复制菜单项的功能实现
copyitem.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
Stringtext=content.getSelectedText();
StringSelectionselection=newStringSelection(text);
clipboard.setContents(selection,null);
}
});
//粘贴菜单项的功能实现
pasteitem.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
Transferablecontents=clipboard.getContents(this);
Stringstr=null;
try{
str=(String)contents.getTransferData(DataFlavor.stringFlavor);
}catch(UnsupportedFlavorExceptione1){
e1.printStackTrace();
}catch(IOExceptione1){
e1.printStackTrace();
}
if(str==null)
return;
try{
content.replaceRange(str,content.getSelectionStart(),content.getSelectionEnd());
}
catch(Exceptione1){
e1.printStackTrace();
}
}
});
//删除菜单项的功能实现
deleteitem.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
content.replaceRange("",content.getSelectionStart(),content.getSelectionEnd());
}
});
//创建格式菜单上的各个菜单项并添加到菜单上
MenuItemworditem=newMenuItem("字体(F)");
formatmenu.add(worditem);
worditem.setEnabled(true);
formatmenu.addSeparator();
MenuItemcoloritem=newMenuItem("字体颜色(C)");
formatmenu.add(colorit