• 工程一:记事本的实现


    以下是本人设计的java记事本,功能比较简单粗暴,纯粹是为了巩固java IO和GUI的内容不足之处,欢迎各路大神指正!

    以下是UI层的代码

    //记事本界面层
    	
    	import java.awt.*;
    	import java.awt.datatransfer.*;
    	import java.awt.event.*;//问题:(此处注释掉变编译不通过)
    	import javax.swing.*;
    	import java.awt.datatransfer.*;
    	import javax.swing.undo.*;
    	import javax.swing.text.Document;
    	import java.awt.event.ActionEvent;
    	import java.awt.event.ActionListener;
    	import javax.swing.event.UndoableEditEvent;
    	import javax.swing.event.UndoableEditListener;
    	import javax.swing.event.*;
    	public class noteBookUI{
    		
    		//定义一个全局变量用于存储当前打开文件的路径
    		String nowFileSrc = null;
    		
    		//执行入口
    		
    		public static void main(String args[]){
    			noteBookUI nui = null;
    			nui = new noteBookUI();
    			nui.initBO();
    			
    		}
    		
    		noteBookBO nbo = null;
    		//初始化业务对象
    		public void initBO(){
    			nbo = new noteBookBO();
    			
    		}
    		
    		/**
    		*以下实现ui界面
    		*/
    		
    		JFrame jFrame;
    		JMenu jm1,jm2,jm3;
    		JMenuBar jmb;
    		JMenuItem jmt1,jmt2,jmt3,jmt4,jmt5,jmt6,jmt7,jmt8,jmt9,jmt10,
    		jmt11,jmt12,jmt13,jmt14,jmt15,jmt16,jmt17;
    		//文本输入区域
    		final JTextArea text;JScrollPane jp;
    		public noteBookUI(){    
    			//主窗口
    			jFrame = new JFrame("记事本");
    			//菜单条
    			jmb=new JMenuBar();
    			
    			//主菜单
    			//创建统一字体
    			Font font_jm=new Font("微软雅黑",Font.PLAIN,20);
    			jm1=new JMenu("文件");
    			jm1.setFont(font_jm);
    			jm2=new JMenu("编辑");
    			jm2.setFont(font_jm);
    			jm3=new JMenu("格式");
    			jm3.setFont(font_jm);
    			//设置按钮的大小
    			jm1.setPreferredSize(new Dimension(50,20));
    			jm2.setPreferredSize(new Dimension(50,20));
    			jm3.setPreferredSize(new Dimension(50,20));
    			
    			//定义两个常量,设置按钮的长宽
    			int WIDTH = 200;  //宽度
    			int HEIGH = 30; //高度
    			//创建文件菜单下的菜单按钮
    			//创建字体对象
    			Font font_jmt=new Font("微软雅黑",Font.PLAIN,20);
    			jmt1 = new JMenuItem("  新建(N)      Ctrl+N");
    			jmt1.setFont(font_jmt);
    			jmt2 = new JMenuItem("  打开(O)      Ctrl+O");
    			jmt2.setFont(font_jmt);
    			jmt3 = new JMenuItem("  保存(S)       Ctrl+S");
    			jmt3.setFont(font_jmt);
    			jmt4 = new JMenuItem("  另存为(A)");
    			jmt4.setFont(font_jmt);
    			jmt5 = new JMenuItem("  退出(X)");
    			jmt5.setFont(font_jmt);
    			//设置按钮大小
    			jmt1.setPreferredSize(new Dimension(WIDTH,HEIGH));
    			jmt2.setPreferredSize(new Dimension(WIDTH,HEIGH));
    			jmt3.setPreferredSize(new Dimension(WIDTH,HEIGH));
    			jmt4.setPreferredSize(new Dimension(WIDTH,HEIGH));
    			jmt5.setPreferredSize(new Dimension(WIDTH,HEIGH));
    			
    			//将相关按钮添加到相关菜单
    			jm1.add(jmt1);
    			jm1.add(jmt2);
    			jm1.add(jmt3);
    			jm1.add(jmt4);
    			
    			//创建编辑菜单下的按钮
    			jmt6 = new JMenuItem("  撤销(U)      Ctrl+Z");
    			jmt6.setFont(font_jmt);
    			jmt7 = new JMenuItem("  剪切(T)      Ctrl+X");
    			jmt7.setFont(font_jmt);
    			jmt8 = new JMenuItem("  复制(C)      Ctrl+C");
    			jmt8.setFont(font_jmt);
    			jmt9 = new JMenuItem("  粘贴(P)      Ctrl+V");
    			jmt9.setFont(font_jmt);
    			jmt10 = new JMenuItem("  删除(L)        Del");
    			jmt10.setFont(font_jmt);
    			jmt11 = new JMenuItem("  查找(F)      Ctrl+F");
    			jmt11.setFont(font_jmt);
    			jmt12 = new JMenuItem("  查找下一个(N)  F3");
    			jmt12.setFont(font_jmt);
    			jmt13 = new JMenuItem("  替换(R)      Ctrl+H");
    			jmt13.setFont(font_jmt);
    			jmt14 = new JMenuItem("  替换(A)      Ctrl+A");
    			jmt14.setFont(font_jmt);
    			
    			//设置按钮大小
    			jmt6.setPreferredSize(new Dimension(WIDTH,HEIGH));
    			jmt7.setPreferredSize(new Dimension(WIDTH,HEIGH));
    			jmt8.setPreferredSize(new Dimension(WIDTH,HEIGH));
    			jmt9.setPreferredSize(new Dimension(WIDTH,HEIGH));
    			jmt10.setPreferredSize(new Dimension(WIDTH,HEIGH));
    			jmt11.setPreferredSize(new Dimension(WIDTH,HEIGH));
    			jmt12.setPreferredSize(new Dimension(WIDTH,HEIGH));
    			jmt13.setPreferredSize(new Dimension(WIDTH,HEIGH));
    			jmt14.setPreferredSize(new Dimension(WIDTH,HEIGH));
    			//添加相关按钮到编辑下拉菜单中
    			jm2.add(jmt6);
    			jm2.add(jmt7);
    			jm2.add(jmt8);
    			jm2.add(jmt9);
    			jm2.add(jmt10);
    			jm2.add(jmt11);
    			jm2.add(jmt12);
    			jm2.add(jmt13);
    			jm2.add(jmt14);
    			
    			//创建格式下拉菜单下的菜单
    			jmt15 = new JMenuItem("  自动换行(W)");
    			jmt15.setFont(font_jmt);
    			jmt16 = new JMenuItem("  字体(F)");
    			jmt16.setFont(font_jmt);
    			jmt15.setPreferredSize(new Dimension(WIDTH,HEIGH));
    			jmt16.setPreferredSize(new Dimension(WIDTH,HEIGH));
    			//添加
    			jm3.add(jmt15);
    			jm3.add(jmt16);
    			
    			jmb.add(jm1);
    			jmb.add(Box.createHorizontalStrut(50));
    			jmb.add(jm2);
    			jmb.add(Box.createHorizontalStrut(50));
    			jmb.add(jm3);
    			jFrame.add(jmb);
    			//添加位置大小属性
    			jFrame.add(jmb,"North");
    			
    			//创建滚动输入窗体
    			text = new JTextArea();
    			//设置输入框的默认字体
    			Font font_write = new Font("微软雅黑",Font.PLAIN,20);
    			text.setFont(font_write);
    			jp = new JScrollPane(text);
    			//显示水平(垂直)滚动条
    			jp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
    			jp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS );
    			jFrame.add(jp);
    			
    			
    			//往编辑区域添加撤销相关组件
    			final UndoManager undo = new UndoManager();
    			Document doc = text.getDocument();
    			//注册给定的观察者以便开始接收文档发生不可撤消的编辑的通知
    			doc.addUndoableEditListener(new UndoableEditListener() {
    				public void undoableEditHappened(UndoableEditEvent evt) {
    					undo.addEdit(evt.getEdit());
    				}
    			});
    			
    			//快捷键实现
    			//新建
    			text.getActionMap().put("NewFile",new AbstractAction("NewFile") {
    				public void actionPerformed(ActionEvent evt) {
    					//新建文件之前弹出是否保存当前文件数据窗口
    					//beforeCreatFile();
    					String srcFile = null;
    					//选择存储路径,弹出路径选择窗口
    					//srcFile = srcSelect("新建");
    					srcFile = showSelectSrc_newFile();
    					//如果用户没有选择路径直接取消操作,则退出该按钮操作
    					if(srcFile==null){
    						return ;
    					}else{
    						//路径选择好后,弹出文件名字输入框
    						//String fileName = showGetName();
    						//调用业务类中的方法创建文件,成功后初始化当前文件路径并弹出提示窗口
    						nowFileSrc = nbo.doCreateFile(srcFile);
    						//更改窗体标题为当前文件名
    						jFrame.setTitle(srcFile);
    						//创建成功后弹出提示窗口
    						JOptionPane.showMessageDialog(null, "创建文件成功");
    					}
    				}
    			});
    			
    			//打开
    			text.getActionMap().put("Open",new AbstractAction("Open") {
    				public void actionPerformed(ActionEvent evt) {
    					String srcFile = null;
    					srcFile = showSelectSrc_openFile();
    					//判断是否选择了路径,如果路径选择成功,执行打开操作
    					if(srcFile!=null){
    						nowFileSrc = srcFile;
    						String fileInfo = nbo.doOpen(srcFile);
    						//将文件的信息传递给文本框
    						text.setText(fileInfo);
    					}else{
    						JOptionPane.showMessageDialog(null, "文件打开失败,请重新操作", "提示", JOptionPane.ERROR_MESSAGE);
    					}
    				}
    			});
    			
    			//保存
    			text.getActionMap().put("Conserver",new AbstractAction("Conserver") {
    				public void actionPerformed(ActionEvent evt) {
    					//获取输入文本区域的值
    					String a = text.getText();
    					System.out.println(a);
    					//当前已打开文件,执行保存操作,否则提示创建或打开文件
    					if(nowFileSrc!=null){
    						int rtn = nbo.doConserve(nowFileSrc,a);
    						if(rtn==1){
    							JOptionPane.showMessageDialog(null, "保存成功!", "提示", JOptionPane.ERROR_MESSAGE);
    						}else{
    							JOptionPane.showMessageDialog(null, "保存失败,请重新操作!", "提示", JOptionPane.ERROR_MESSAGE);
    						}
    					}else{
    						String src = showSelectSrc_saveOther();
    						int rtn = nbo.doConserve(src,a);
    						if(rtn==1){
    							JOptionPane.showMessageDialog(null, "保存成功!", "提示", JOptionPane.ERROR_MESSAGE);
    						}else{
    							JOptionPane.showMessageDialog(null, "保存失败,请重新操作!", "提示", JOptionPane.ERROR_MESSAGE);
    						}
    					}
    				}
    			});
    			
    			//另存为
    			text.getActionMap().put("SaveAs",new AbstractAction("SaveAs") {
    				public void actionPerformed(ActionEvent evt) {
    					//进行所有操作之前先判断用户是否已经打开文件
    					if(nowFileSrc==null){
    						showNotOpenFileInfo();
    						return ;
    					}else{
    						//获取输入文本区域的值
    						String a = text.getText();
    						//跳转至路径选择界面
    						String srcFile4 = null;
    						srcFile4 = showSelectSrc_saveOther();
    						//判断路径选择操作是否成功
    						if(srcFile4==null){
    							return ;
    						}else{
    							nbo.doConserve(srcFile4,a);
    						}
    					}
    				}
    			});
    			
    			//撤销
    			text.getActionMap().put("Undo",new AbstractAction("Undo") {
    				public void actionPerformed(ActionEvent evt) {
    					try{
    						if(undo.canUndo()){
    							undo.undo();
    						}else{
    							JOptionPane.showMessageDialog(null, "当前不能进行撤销操作!", "提示", JOptionPane.ERROR_MESSAGE);
    						}
    					}catch(CannotUndoException e){
    						//不可撤销后弹出提示信息
    						JOptionPane.showMessageDialog(null, "操作错误,请重新操作", "提示", JOptionPane.ERROR_MESSAGE);
    					}
    				}
    			});
    			//剪切
    			text.getActionMap().put("JianQie",new AbstractAction("JianQie") {
    				public void actionPerformed(ActionEvent evt) {
    					//判断当前编辑区域有无文本
    					if(text.getText().equals("")){
    						JOptionPane.showMessageDialog(null, "当前文本编辑区域为空,不能进行剪切操作", "提示", JOptionPane.ERROR_MESSAGE);
    					}else{
    						int rtn = nbo.doJianQie(text);
    						if(rtn == 1){
    							JOptionPane.showMessageDialog(null, "剪切成功!", "提示", JOptionPane.ERROR_MESSAGE);
    						}else{
    							JOptionPane.showMessageDialog(null, "剪切操作失败,请重新操作!", "提示", JOptionPane.ERROR_MESSAGE);
    						}
    					}
    				}
    			});
    			
    			//复制
    			text.getActionMap().put("Copy",new AbstractAction("Copy") {
    				public void actionPerformed(ActionEvent evt) {
    					int rtn = nbo.doCopy(text);
    					 if(rtn == -1){
    						JOptionPane.showMessageDialog(null, "复制操作失败,请重新操作!", "提示", JOptionPane.ERROR_MESSAGE);
    					}
    				}
    			});
    			
    			//粘贴
    			text.getActionMap().put("Paste",new AbstractAction("Paste") {
    				public void actionPerformed(ActionEvent evt) {
    					try{
    						int rtn = nbo.doPaste(text);
    						if(rtn==-1){
    							//剪切板内容不是文本内容
    							JOptionPane.showMessageDialog(null, "当前内容是非文本,无法粘贴!", "提示", JOptionPane.ERROR_MESSAGE);
    						}
    						if(rtn==1){
    							//剪切板为空
    							JOptionPane.showMessageDialog(null, "当前剪切板无内容,请先进行复制操作!", "提示", JOptionPane.ERROR_MESSAGE);
    						}
    					}catch(Exception e){
    						//有操作异常,弹出异常消息
    						JOptionPane.showMessageDialog(null, "操作错误,请重新操作", "提示", JOptionPane.ERROR_MESSAGE);
    					}
    				}
    			});
    			
    			//删除
    			text.getActionMap().put("Delete",new AbstractAction("Delete") {
    				public void actionPerformed(ActionEvent evt) {
    					int rtn = nbo.doDelete(text);
    					if(rtn == -1){
    						 JOptionPane.showMessageDialog(null, "删除操作失败,请选择您要删除的区域!", "提示", JOptionPane.ERROR_MESSAGE);
    					}
    				}
    			});
    			
    			//查找
    			text.getActionMap().put("Search",new AbstractAction("Search") {
    				public void actionPerformed(ActionEvent evt) {
    					try{
    						if("".equals(text.getText())){
    							//文本编辑区域为空,提示无法查找
    							JOptionPane.showMessageDialog(null, "当前编辑区域没有内容,无法查找!", "提示", JOptionPane.ERROR_MESSAGE);
    						}else{
    							showSearch();
    						}	
    					}catch(Exception e){
    						//有操作异常,弹出异常消息
    						JOptionPane.showMessageDialog(null, "操作错误,请重新操作", "提示", JOptionPane.ERROR_MESSAGE);
    					}
    				}
    			});
    			
    			//查找下一个
    			text.getActionMap().put("SearchNext",new AbstractAction("SearchNext") {
    				public void actionPerformed(ActionEvent evt) {
    					//这里和查找操作一样
    					try{
    						if("".equals(text.getText())){
    							//文本编辑区域为空,提示无法查找
    							JOptionPane.showMessageDialog(null, "当前编辑区域没有内容,无法查找!", "提示", JOptionPane.ERROR_MESSAGE);
    						}else{
    							showSearch();
    						}	
    					}catch(Exception e){
    						//有操作异常,弹出异常消息
    						JOptionPane.showMessageDialog(null, "操作错误,请重新操作", "提示", JOptionPane.ERROR_MESSAGE);
    					}
    				}
    			});
    			
    			//替换
    			text.getActionMap().put("Replace",new AbstractAction("Replace") {
    				//这里和查找操作一样
    				public void actionPerformed(ActionEvent evt) {
    					try{
    						if("".equals(text.getText())){
    							//文本编辑区域为空,提示无法查找
    							JOptionPane.showMessageDialog(null, "当前编辑区域没有内容,无法查找!", "提示", JOptionPane.ERROR_MESSAGE);
    						}else{
    							showSearch();
    						}	
    					}catch(Exception e){
    						//有操作异常,弹出异常消息
    						JOptionPane.showMessageDialog(null, "操作错误,请重新操作", "提示", JOptionPane.ERROR_MESSAGE);
    					}
    				}
    			});
    			//全选
    			text.getActionMap().put("SelectAll",new AbstractAction("SelectAll") {
    				public void actionPerformed(ActionEvent evt) {
    					try{
    						if("".equals(text.getText())){
    							//若文本区域没有文本内容,弹出提示框
    							JOptionPane.showMessageDialog(null, "当前编辑区域没有内容,无法全选!", "提示", JOptionPane.ERROR_MESSAGE);
    						}else{
    							nbo.chooseAll(text);
    						}
    					}catch(Exception e){
    						//有异常弹出提示信息
    						JOptionPane.showMessageDialog(null, "操作出错,请重新操作", "提示", JOptionPane.ERROR_MESSAGE);
    					}//标记
    				}
    			});
    			//添加相关事件
    			text.getInputMap().put(KeyStroke.getKeyStroke("control N"), "NewFile");
    			text.getInputMap().put(KeyStroke.getKeyStroke("control O"), "Open");
    			text.getInputMap().put(KeyStroke.getKeyStroke("control S"), "Conserver");
    			text.getInputMap().put(KeyStroke.getKeyStroke("control Z"), "Undo");
    			text.getInputMap().put(KeyStroke.getKeyStroke("control X"), "JianQie");
    			text.getInputMap().put(KeyStroke.getKeyStroke("control C"), "Copy");
    			text.getInputMap().put(KeyStroke.getKeyStroke("Del"), "Delete");
    			text.getInputMap().put(KeyStroke.getKeyStroke("control F"), "Search");
    			text.getInputMap().put(KeyStroke.getKeyStroke("F3"), "SearchNext");
    			text.getInputMap().put(KeyStroke.getKeyStroke("control A"), "SelectAll");
    		
    			
    			//设置窗口属性
    			jFrame.setVisible(true);
    			jFrame.setSize(1000, 1000);
    			jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    			
    			
    			//监听相关事件
    			
    			//监听主菜单按钮
    			//监听编辑按钮事件,每次单击菜单按钮都需要更新各个按钮是否可操作
    			jm2.addMenuListener(new MenuListener(){
    				
    				//由于MenuListener是抽象类,所以实现另外两个方法
    				 public void menuDeselected(MenuEvent e){
                        return ;
                    }
    				public void menuCanceled(MenuEvent e){
                        return ;
                    }
                    public void menuSelected(MenuEvent e){
                        //更新各个按钮可操作状态
    					//判断撤销是否可用(为什么不用变成final的?)
    					System.out.println("Test jm2ActionListen");
    					jmt6.setEnabled(undo.canUndo());
    					//判断剪切是否可用
    					if((text.getText()==null)||(text.getSelectedText()==null)){
    						jmt7.setEnabled(false);
    					}
    					//判断复制是否可用
    					if((text.getText()==null)||(text.getSelectedText()==null)){
    						jmt8.setEnabled(false);
    					}
    					//判断粘贴是否可用
    					String value = null;
    					try{
    						Clipboard c1 = Toolkit.getDefaultToolkit().getSystemClipboard();
    						Transferable clipT = c1.getContents(null);
    						value = (String)clipT.getTransferData(DataFlavor.stringFlavor);
    					}catch(Exception ex){
    						value = "";
    					}
    					if(value.equals("")){
    						System.out.println("Test jm2ActionListen zhanTie");
    						jmt9.setEnabled(false);
    					}
    					//判断删除是否可用
    					if(nbo.doDelete(text)!=1){
    						jmt10.setEnabled(false);
    					}
                    }
    				
    			});
    			
    			//监听新建按钮事件
    			jmt1.addActionListener(new ActionListener(){
    				public void actionPerformed(ActionEvent ae){
    					//新建文件之前弹出是否保存当前文件数据窗口
    					//beforeCreatFile();
    					String srcFile = null;
    					//选择存储路径,弹出路径选择窗口
    					//srcFile = srcSelect("新建");
    					srcFile = showSelectSrc_newFile();
    					//如果用户没有选择路径直接取消操作,则退出该按钮操作
    					if(srcFile==null){
    						return ;
    					}else{
    						//路径选择好后,弹出文件名字输入框
    						//String fileName = showGetName();
    						//调用业务类中的方法创建文件,成功后初始化当前文件路径并弹出提示窗口
    						nowFileSrc = nbo.doCreateFile(srcFile);
    						//创建成功后弹出提示窗口
    						JOptionPane.showMessageDialog(null, "创建文件成功");
    					}
    				}
    			});
    			
    			//类似地监听其他按钮
    			//监听打开按钮
    			jmt2.addActionListener(new ActionListener(){
    				public void actionPerformed(ActionEvent ae){
    					String srcFile = null;
    					srcFile = showSelectSrc_openFile();
    					//判断是否选择了路径,如果路径选择成功,执行打开操作
    					if(srcFile!=null){
    						nowFileSrc = srcFile;
    						String fileInfo = nbo.doOpen(srcFile);
    						//将文件的信息传递给文本框
    						text.setText(fileInfo);
    					}else{
    						JOptionPane.showMessageDialog(null, "文件打开失败,请重新操作", "提示", JOptionPane.ERROR_MESSAGE);
    					}
    				}
    			});
    			//监听保存
    			jmt3.addActionListener(new ActionListener(){
    				public void actionPerformed(ActionEvent ae){
    					//获取输入文本区域的值
    					String a = text.getText();
    					System.out.println(a);
    					//当前已打开文件,执行保存操作,否则提示创建或打开文件
    					if(nowFileSrc!=null){
    						int rtn = nbo.doConserve(nowFileSrc,a);
    						if(rtn==1){
    							JOptionPane.showMessageDialog(null, "保存成功!", "提示", JOptionPane.ERROR_MESSAGE);
    						}else{
    							JOptionPane.showMessageDialog(null, "保存失败,请重新操作!", "提示", JOptionPane.ERROR_MESSAGE);
    						}
    					}else{
    						String src = showSelectSrc_saveOther();
    						int rtn = nbo.doConserve(src,a);
    						if(rtn==1){
    							JOptionPane.showMessageDialog(null, "保存成功!", "提示", JOptionPane.ERROR_MESSAGE);
    						}else{
    							JOptionPane.showMessageDialog(null, "保存失败,请重新操作!", "提示", JOptionPane.ERROR_MESSAGE);
    						}
    					}
    					
    				}
    			});
    
    		//监听另存为按钮
    		jmt4.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent ae){
    				//进行所有操作之前先判断用户是否已经打开文件
    				if(nowFileSrc==null){
    					showNotOpenFileInfo();
    					return ;
    				}else{
    					//获取输入文本区域的值
    					String a = text.getText();
    					//跳转至路径选择界面
    					String srcFile4 = null;
    					srcFile4 = showSelectSrc_saveOther();
    					//判断路径选择操作是否成功
    					if(srcFile4==null){
    						return ;
    					}else{
    						nbo.doConserve(srcFile4,a);
    					}
    				}	
    			}
    		});
    		
    		/**
    		*编辑菜单下的按钮监听
    		*/
    		//监听撤销按钮
    		jmt6.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    try{
                        undo.undo();
                    }catch(CannotRedoException cre){
    					JOptionPane.showMessageDialog(null, "当前不能进行撤销操作!", "提示", JOptionPane.ERROR_MESSAGE);
                        
                    }
    				//更新按钮是否可用
                    jmt6.setEnabled(undo.canUndo());
                }
            });
    		
    		//监听剪切按钮
    		jmt7.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent ae){
    				//判断当前编辑区域有无文本
    				if(text.getText().equals("")){
    					JOptionPane.showMessageDialog(null, "当前文本编辑区域为空,不能进行剪切操作", "提示", JOptionPane.ERROR_MESSAGE);
    				}else{
    					int rtn = nbo.doJianQie(text);
    					if(rtn == 1){
    						JOptionPane.showMessageDialog(null, "剪切成功!", "提示", JOptionPane.ERROR_MESSAGE);
    					}else{
    						JOptionPane.showMessageDialog(null, "剪切操作失败,请重新操作!", "提示", JOptionPane.ERROR_MESSAGE);
    					}
    				}
    				 
    			}
    		});
    		//监听复制按钮
    		jmt8.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent ae){
    				 int rtn = nbo.doCopy(text);
    				 if(rtn == -1){
    					 JOptionPane.showMessageDialog(null, "复制操作失败,请重新操作!", "提示", JOptionPane.ERROR_MESSAGE);
    				 }
    			}
    		});
    		//监听粘贴按钮
    		jmt9.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent ae){
    				 try{
    					int rtn = nbo.doPaste(text);
    					if(rtn==-1){
    						//剪切板内容不是文本内容
    						JOptionPane.showMessageDialog(null, "当前内容是非文本,无法粘贴!", "提示", JOptionPane.ERROR_MESSAGE);
    					}
    					if(rtn==1){
    						//剪切板为空
    						JOptionPane.showMessageDialog(null, "当前剪切板无内容,请先进行复制操作!", "提示", JOptionPane.ERROR_MESSAGE);
    					}
    				}catch(Exception e){
    					 //有操作异常,弹出异常消息
    					 JOptionPane.showMessageDialog(null, "操作错误,请重新操作", "提示", JOptionPane.ERROR_MESSAGE);
    				}
    			}
    		});
    		//监听删除按钮
    		jmt10.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent ae){
    				 int rtn = nbo.doDelete(text);
    				 if(rtn == -1){
    					 JOptionPane.showMessageDialog(null, "删除操作失败,请选择您要删除的区域!", "提示", JOptionPane.ERROR_MESSAGE);
    				 }
    			}
    			
    		});
    		//监听查找按钮
    		jmt11.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent ae){
    				try{
    					if("".equals(text.getText())){
    						//文本编辑区域为空,提示无法查找
    						JOptionPane.showMessageDialog(null, "当前编辑区域没有内容,无法查找!", "提示", JOptionPane.ERROR_MESSAGE);
    					}else{
    						showSearch();
    					}	
    				}catch(Exception e){
    					//有操作异常,弹出异常消息
    					JOptionPane.showMessageDialog(null, "操作错误,请重新操作", "提示", JOptionPane.ERROR_MESSAGE);
    				}
    			}
    		});
    		//监听查找下一个
    		jmt12.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent ae){
    				try{
    					if("".equals(text.getText())){
    						//文本编辑区域为空,提示无法查找
    						JOptionPane.showMessageDialog(null, "当前编辑区域没有内容,无法查找!", "提示", JOptionPane.ERROR_MESSAGE);
    					}else{
    						showSearch();
    					}	
    				}catch(Exception e){
    					//有操作异常,弹出异常消息
    					JOptionPane.showMessageDialog(null, "操作错误,请重新操作", "提示", JOptionPane.ERROR_MESSAGE);
    				}
    			}
    		});
    		//监听替换
    		jmt13.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent ae){
    				//首先弹出查找/查找下一个/替换窗口
    				 showReplace();
    			}
    		});
    		//监听全选
    		jmt14.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent ae){
    				//首先弹出查找/查找下一个/替换窗口
    				 nbo.chooseAll(text);
    			}
    		});
    			
    		}
    		
    		//新建路径选择界面
    		public String showSelectSrc_newFile(){
    			 FileDialog fd=new FileDialog(new Frame(),"新建",FileDialog.SAVE);
    			 //System.out.println("000");
    			 fd.setVisible(true);
    			 if(fd.getFile()==null||fd.getDirectory()==null){
    				 return null;
    			 }else{
    				 return fd.getDirectory()+fd.getFile();
    			 }
    		}
    		//另存为路径选择界面
    		public String showSelectSrc_saveOther(){
    			 FileDialog fd=new FileDialog(new Frame(),"另存为",FileDialog.SAVE);
    			 //System.out.println("000");
    			 fd.setVisible(true);
    			 if(fd.getFile()==null||fd.getDirectory()==null){
    				 return null;
    			 }else{
    				 return fd.getDirectory()+fd.getFile();
    			 }
    			 
    		}
    		
    		//打开路径选择界面
    		public String showSelectSrc_openFile(){
    			FileDialog fd=new FileDialog(new Frame(),"打开",FileDialog.LOAD);
    			 fd.setVisible(true);
    			 if(fd.getFile()==null||fd.getDirectory()==null){
    				 return null;
    			 }else{
    				 return fd.getDirectory()+fd.getFile();
    			 }
    		}
    		
    		//确定提示界面
    		public void showDoSuccess(String doWhat){
    			JOptionPane.showConfirmDialog(null, "确定"+doWhat+"?", doWhat, JOptionPane.YES_NO_OPTION); 
    		}
    		
    		//当前未打开文件时的提示界面
    		public void showNotOpenFileInfo(){
    			JOptionPane.showMessageDialog(null, "当前未打开文件,请先打开或者创建相关文件再进行其它操作");
    		}
    		
    		/*
    		//文件名字输入界面,返回相关文件名字(用于重命名和新建功能)
    		public String showGetName(){
    			String name = JOptionPane.showInputDialog(null,"请输入文件名字:
    ","输入文件名",JOptionPane.PLAIN_MESSAGE); 
    			return name;
    		}
    		*/
    		
    		//进行新操作前(新建文件和关闭窗口)询问是否保存当前数据显示界面
    		public void beforeCreatFile(){
    			//弹出该窗口的前提是已经打开了相关文件
    			if(nowFileSrc!=null){
    				final JFrame frame_remindSave = new JFrame("记事本");
    				//创建一个垂直box
    				Box remindSaveBox = Box.createVerticalBox();
    				
    				//文字提示信息
    				JPanel jpanel_remindLabel = new JPanel();
    				JLabel jlabel_tiShi = new JLabel("是否将更改保存到"+nowFileSrc+"?");
    				jpanel_remindLabel.add(jlabel_tiShi);
    				remindSaveBox.add(jpanel_remindLabel);
    				remindSaveBox.add(Box.createVerticalStrut(5));
    				
    				//确定和取消按钮
    				JPanel jpanel_remindButton = new JPanel();
    				JButton baoCun_btn = new JButton("保存");
    				JButton fangQi_btn = new JButton("放弃");
    				jpanel_remindButton.add(baoCun_btn);
    				jpanel_remindButton.add(fangQi_btn);
    				remindSaveBox.add(jpanel_remindButton);
    				
    				frame_remindSave.add(remindSaveBox);
    				
    				//设置窗口属性
    				frame_remindSave.setVisible(true);
    				frame_remindSave.setSize(1000, 200);
    				frame_remindSave.setResizable(false);
    				frame_remindSave.setLocation(500,500);
    				frame_remindSave.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
    				
    				
    				//监听相关按钮
    				//监听保存按钮
    				baoCun_btn.addActionListener(new ActionListener(){
    				public void actionPerformed(ActionEvent ae){
    					nbo.doConserve(nowFileSrc,text.getText());
    					System.out.println("000");
    					frame_remindSave.dispose();
    				}
    				
    				});
    				
    				//监听放弃按钮
    				fangQi_btn.addActionListener(new ActionListener(){
    				public void actionPerformed(ActionEvent ae){
    					System.out.println("001");
    					frame_remindSave.dispose();
    				}
    				
    				});
    				
    			}else{
    				//当前没有打开文件则直接退出该方法
    				return ;
    			}
    		}
    			
    		
    		//查找显示界面
    		//JFrame frame1;
    		public void showSearch(){
    			final String [] selectInfo = new String[2];
    			//默认状态查找是向下查找,查找方框内信息是空
    			selectInfo[0] = "向下";
    			selectInfo[1] = "";
    			JFrame frame1 = new JFrame("查找");
    			
    			//创建一个垂直box
    			Box findInfoBox = Box.createVerticalBox();
    			
    			JPanel jpanel_danXuan = new JPanel();
    			
    			//文本输入框
    			JLabel label_fingInfo = new JLabel("查找内容");
    			final JTextField jtext_findInfo = new JTextField(10);
    			JPanel findInfo_panel = new JPanel();
    			findInfo_panel.add(label_fingInfo);
    			findInfo_panel.add(jtext_findInfo);
    			findInfoBox.add(findInfo_panel);
    			findInfoBox.add(Box.createVerticalStrut(10));
    			
    			//单选按钮
    			JRadioButton jrb1 = new JRadioButton("向下");
    			JRadioButton jrb2 = new JRadioButton("向上");
    			//默认选中的是向下按钮
    			jrb1.setSelected(true);
    			ButtonGroup group = new ButtonGroup();
    			group.add(jrb1);
    			group.add(jrb2);
    			jpanel_danXuan.add(jrb1);
    			jpanel_danXuan.add(jrb2);
    			findInfoBox.add(jpanel_danXuan);
    			findInfoBox.add(Box.createVerticalStrut(10));
    			
    			//确定和取消按钮
    			JPanel jpanel_queDingQuXiao = new JPanel();
    			JButton queDing_btn = new JButton("确定");
    			JButton quXiao_btn = new JButton("取消");
    			jpanel_queDingQuXiao.add(queDing_btn);
    			jpanel_queDingQuXiao.add(quXiao_btn);
    			findInfoBox.add(jpanel_queDingQuXiao);
    			findInfoBox.add(Box.createVerticalStrut(5));
    			
    			//提示信息
    			JPanel jpanel_tiShi = new JPanel();
    			final JLabel jlabel_tiShi = new JLabel("请输入您要查找的信息");
    			jlabel_tiShi.setForeground(new Color(238,32,32));
    			jpanel_tiShi.add(jlabel_tiShi);
    			findInfoBox.add(jpanel_tiShi);
    			
    			
    			frame1.add(findInfoBox);
    			
    			
    			//设置窗口属性
    			frame1.setVisible(true);
    			frame1.setSize(1000, 200);
    			frame1.setResizable(false);
    			frame1.setLocation(500,500);
    			frame1.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
    			
    			
    			//添加按钮事件
    			//监听单选按钮事件
    			jrb1.addActionListener(new ActionListener(){
    				public void actionPerformed(ActionEvent e){
    					//将相应的选取的信息赋值给数组selectInfo
    					selectInfo[0] = "向下";
    				}
    			});
    			
    			jrb2.addActionListener(new ActionListener(){
    				public void actionPerformed(ActionEvent e){
    					//将相应的选取的信息赋值给数组selectInfo
    					selectInfo[0] = "向上";
    				}
    			});
    			
    			//监听确定、取消按钮事件
    			queDing_btn.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent ae){
    				//确定按钮,执行查找操作
    				selectInfo[1] = jtext_findInfo.getText();
    				int rtn = nbo.doFindString(text,selectInfo);
    				/**
    				*根据返回值,弹出相应的提示信息
    				*/
    				if(rtn==0){
    					//如果输入字符串为空,提示输入为空
    					jlabel_tiShi.setText("您输入的查找内容为空,请重新输入");
    				}else if(rtn==1){
    					//返回1,查找成功
    					jlabel_tiShi.setText("查找成功");
    				}else{
    					//找不到内容
    					jlabel_tiShi.setText(selectInfo[0]+"查找"+"找不到该内容");
    				}
    			}
    			});
    			quXiao_btn.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent ae){
    				//返回null
    				return ;
    			}
    			});	
    		}
    		
    	//替换窗口
    	public void showReplace(){
    		JFrame frame2 = new JFrame("替换");
    		//创建一个垂直box
    		Box replaceBox = Box.createVerticalBox();
    		
    		//创建查找内容板块
    		JPanel jpanel_search = new JPanel();
    		JLabel jlabel_search = new JLabel("查找内容  ");
    		final JTextField jtext_search = new JTextField(15);
    		JButton jbutton_search = new JButton("查找下一个");
    		jpanel_search.add(jlabel_search);
    		jpanel_search.add(jtext_search);
    		jpanel_search.add(jbutton_search);
    		replaceBox.add(jpanel_search);
    		replaceBox.add(Box.createVerticalStrut(10));
    		
    		//创建替换内容板块
    		JPanel jpanel_replace = new JPanel();
    		JLabel jlabel_replace = new JLabel("  替换  ");
    		final JTextField jtext_replace = new JTextField(15);
    		JButton jbutton_replace = new JButton("替换");
    		JButton jbutton_replaceall = new JButton("全部替换");
    		jpanel_replace.add(jlabel_replace);
    		jpanel_replace.add(jtext_replace);
    		jpanel_replace.add(jbutton_replace);
    		jpanel_replace.add(jbutton_replaceall);
    		replaceBox.add(jpanel_replace);
    		
    		//创建取消板块以及信息提示板块
    		JPanel jpanel_cancel = new JPanel();
    		JButton jbutton_cancel = new JButton("取消");
    		final JLabel jlabel_tiShi = new JLabel("显示提示信息");
    		jlabel_tiShi.setForeground(new Color(238,32,32));
    		jpanel_cancel.add(jbutton_cancel);
    		replaceBox.add(jpanel_cancel);
    		replaceBox.add(jlabel_tiShi);
    		
    		frame2.add(replaceBox);
    		//设置窗口属性
    		frame2.setVisible(true);
    		frame2.setSize(1000, 200);
    		frame2.setResizable(false);
    		frame2.setLocation(500,500);
    		frame2.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
    		
    		//监听按钮事件
    		//监听查找下一个按钮
    		//获取查找输入框中的内容
    		final JTextArea jtext_search1 = text;
    		jbutton_search.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent ae){
    				//由于查找方法传递的参数是字符串数组,所以先创建一个字符串数组用于传递信息
    				String [] info = new String[2];
    				info[0] = "向下";
    				info[1] = jtext_search.getText();
    				int rtn = nbo.doFindString(text,info);
    				System.out.println(rtn);
    				//根据返回值相应显示提示信息
    				if(rtn==0){
    					//如果输入字符串为空,提示输入为空
    					jlabel_tiShi.setText("您输入的查找内容为空,请重新输入");
    				}else if(rtn==1){
    					//返回1,查找成功
    					jlabel_tiShi.setText("查找成功,您可以选择替换");
    				}else{
    					//找不到内容
    					jlabel_tiShi.setText("找不到该内容,该字符可能不存在或者您已将光标移到最后");
    				}
    			}
    		});
    		
    		//监听替换按钮
    		jbutton_replace.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent ae){
    				int rtn  = nbo.doReplace(jtext_search1,jtext_replace.getText());
    				if(rtn==0){
    					jlabel_tiShi.setText("您还没有选中文字,无法执行替换");
    				}else{
    					jlabel_tiShi.setText("替换成功");
    				}
    			}
    		});
    		
    		
    		//监听全部替换按钮
    		jbutton_replaceall.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent ae){
    				int rtn  = nbo.doReplaceAll(text,jtext_search.getText(),jtext_replace.getText());
    				if(rtn==0){
    					jlabel_tiShi.setText("请输入替换内容和查找内容");
    				}else if(rtn==-1){
    					jlabel_tiShi.setText("找不到内容,请重新输入");
    				}else{
    					jlabel_tiShi.setText("全部替换成功");
    				}
    			}
    		});
    		
    	}
    	
    	/*
    	//添加关闭窗口触发时间
    	addWindowListener(new WindowAdapter(){  
    		public void windowClosing(WindowEvent e) {  
    			super.windowClosing(e);  
    			//弹出询问是否保存修改后的文件
    			
    			 
    		 }  
    		  
    	});  
    	*/		
    	
    	}
    

     

    以下是BO业务层代码

    //记事本
    import java.io.*;
    import java.awt.*;
    import java.awt.datatransfer.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.awt.datatransfer.*;
    import javax.swing.undo.UndoManager;
    import java.lang.StringBuffer.*;
    public  class noteBookBO{
    	
    	/**
    	*定义文件菜单下的业务方法
    	*/
    	//做到打开文件新建文件将窗口标题改为对应文件路劲,关闭窗口触发时间没有实现
    	noteBookDA nda = new noteBookDA();
    	//定义新建方法
    	public  String doCreateFile(String srcFile){
    		String src = null;
    		System.out.println("test doCreatFile"+srcFile);
    		try{
    			File f = nda.creatFile(srcFile);
    			src = f.getAbsolutePath();
    			System.out.println(src);
    		}catch(IOException ie){
    			System.out.println(ie);
    		}
    		//获取当前文件的路径并返回
    		return src;
    	}
    	
    	//定义打开方法
    	public String doOpen(String srcFile){
    		String rtn = null;
    		try{
    			 rtn = nda.dataRead(srcFile);
    		}catch(IOException ie){
    			System.out.println(ie);
    		}
    		return rtn;
    	}
    	//定义保存方法,如果所传递的文件路径所指文件不存在,则对应返回-1,如果保存成功,返回1
    	public int doConserve(String srcFile,String data){
    		int rtn;		
    		try{
    			nda.dataWrite(srcFile,data);
    			rtn = 1;
    		}catch(Exception ie){
    			rtn = -1;
    		}
    		return rtn;
    	}
    	//定义另存为方法
    	public  void doNewConserve(String srcFile,String data) {
    		try{
    			nda.dataWrite(srcFile,data);
    		}catch(IOException ie){
    			System.out.println(ie);
    		}
    	}
    	//定义退出方法
    	public void quit(){
    		System.exit(0);
    	}
    	
    	
    	/**
    	*定义编辑菜单下的业务方法
    	*/
    	//定义撤销的方法,返回1表示撤销成功,返回0表示撤销失败
    	public int doCeXiao(JTextArea text){
    		System.out.println("000");
    		UndoManager undoManager = new UndoManager();
    		text.getDocument().addUndoableEditListener(undoManager);
    		if(undoManager.canUndo()){
    			System.out.println("001");
    			undoManager.undo();
    			return 1;
    		}else{
    			System.out.println("002");
    			return 0;
    		}
    	}
    	//定义剪切方法,成功返回1,失败返回-1
    	public int doJianQie(JTextArea text){
    		//先copy
    		int rtn_copy = doCopy(text);
    		//后delete
    		int rtn_delete = doDelete(text);
    		if((rtn_copy) ==1&&(rtn_delete==1)){
    			return 1;
    		}else{
    			return -1;
    		}
    	}
    	
    	//定义复制方法
    	//获取系统剪贴板,成功返回1,没有选中操作的文本区域,返回-1
    	Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
    	final Clipboard c1 = clipboard;
    	public int doCopy(JTextArea text){
    		String temp = text.getSelectedText(); 
    		if(temp==null){
    			return -1;
    		}else{
    			StringSelection textString = new StringSelection(temp);
    			//Clipboard clipboard = new Clipboard(temp);
    			c1.setContents(textString, null);
    			return 1;
    		}
    		
    	}
    	
    	/*定义粘贴方法,返回1表示操作成功,返回0表示剪切板空白
    	*返回-1表示粘贴内容是非文本
    	*出现相应的异常,相应地返回-2和-3
    	*/
    	public int doPaste(JTextArea text){
    		// 获取剪切板中的内容
    		try{
    			Transferable clipT = c1.getContents(null);
    			String value = null;
    			if (clipT != null){   
    				// 检查内容是否是文本类型   
    				if (clipT.isDataFlavorSupported(DataFlavor.stringFlavor)){
    					//获取剪切板中的数据
    					value = (String)clipT.getTransferData(DataFlavor.stringFlavor);
    					//执行替换操作
    					int start = text.getSelectionStart();
    					int end = text.getSelectionEnd();
    					text.replaceRange(value, start, end);
    					return 1;
    				}else{
    					//粘贴内容非文本返回-1
    					return -1;
    				}  
    			}else{
    				//剪切板为空返回0
    				return 0;
    			} 	 		
    		}catch(UnsupportedFlavorException ufe){
    			//捕获到此异常表示操作不支持该数据类型,返回-2
    			return -2;
    		}catch(IOException ie){
    			//捕获到此异常表示IO操作有问题,返回-3
    			return -3;
    		}
    		
    	}
    	
    	//定义删除方法,成功返回1,如果没有选定操作的文本区域,返回-1
    	public int doDelete(JTextArea text){
    		int start = text.getSelectionStart();
    		int end = text.getSelectionEnd();
    		// 删除被选取的文本
    		if(start==end){
    			return -1;
    		}else{
    			text.replaceRange("", start, end);
    			return 1;
    		}
    		
    	}
    	//定义查找方法,查找成功返回1,查找内容为空返回0,找不到该字符串返回-1
    	int start ;
    	int end ;
    	public int doFindString(JTextArea text,String [] searchValue ){
    		if("".equals(searchValue[1])){
    			//为空,返回0
    			return 0;
    		}else{
    			//判断是向下还是向上搜索,如果是向上,将字符串反转
    			//获取当前光标的位置
    			int caretPosition;
    			if(searchValue[0].equals("向上")){
    				if((text.getSelectedText()!=null)&&(text.getSelectedText().equals(searchValue[1]))){
    					//如果文本选中了要查找的值,说明已经进行过查找操作,此时光标位置应该移动到start处
    					caretPosition = start;
    				}else{
    					//如果还没有进行查找操作,应该获取当前光标的位置
    					caretPosition = text.getCaretPosition();
    				}
    				//先将字符串反转
    				 String text1 = text.getText();
    				 StringBuffer StringBuffer1 = new StringBuffer(text1);
    				 String textReverse = StringBuffer1.reverse().toString();
    				//同时当前光标对应的位置也应该对应改变
    				caretPosition = text1.length() - caretPosition;
    				//查找前,查找的信息也需要反转
    				StringBuffer StringBuffer2 = new StringBuffer(searchValue[1]);
    				String infoReverse = StringBuffer2.reverse().toString();
    				/**
    				*执行查找操作,在操作中,由于字符串被反转
    				*所以将字符串长度减去得出来的索引对应的是原字符串
    				*的end的值
    				*/
    				end = textReverse.length() - textReverse.indexOf(infoReverse, caretPosition);
    				start = end - infoReverse.length();
    				//选中文本
    				if(end>textReverse.length()){
    					//end值大于文本长度,表示该文本不存在
    					return -1;
    				}else{
    					//查找成功,选中文本
    					text.select(start,end);
    					return 1;
    				}
    			}else{
    				String getInfo = text.getText();
    				caretPosition = text.getCaretPosition();
    				//查找对应的字符
    				start = getInfo.indexOf(searchValue[1], caretPosition);
    				end = getInfo.indexOf(searchValue[1], caretPosition) + searchValue[1].length();
    				//选中文本
    				if(start==-1){
    					//文本不存在
    					return -1;
    				}else{
    					//查找成功
    					text.select(start,end);
    					return 1;
    				}
    			}
    		}
    		
    		
    	}
    	
    	//定义替换,返回0表示没有选中文本,返回1表示替换成功
    	public int doReplace(JTextArea text,String replaceInfo){
    		if(text.getSelectedText()==null){
    			return 0;
    		}else{
    			//执行替换操作
    			text.replaceRange(replaceInfo, start, end);
    			return 1;
    		}
    	}
    	
    	//定义全部替换方法,输入为空,返回0,成功替换全部返回1,找不到相应的字符返回-1
    	public int doReplaceAll(JTextArea text,String regex,String replacement){
    		String textInfo = text.getText();
    		if("".equals(textInfo)||"".equals(regex)){
    			return 0;
    		}else{
    			if(textInfo.indexOf(regex)!=-1){
    				//如果替换的字符串存在,则执行替换操作
    				String textDoneReplace = textInfo.replaceAll(regex,replacement);
    				//替换完之后将数据写进输入区域
    				text.setText(textDoneReplace);
    				return 1;
    			}else{
    				return -1;
    			}
    		}
    		
    	}
    	//定义全选
    	public void chooseAll(JTextArea text){
    		text.selectAll();
    	}
    }
    

     以下是DA数据层代码

    //数据层面
    import java .io.*;
    public class noteBookDA{
    	//主方法,测试用
    	public static void main(String [] args){
    		noteBookDA test = new noteBookDA();
    		// try{
    			// //String st = test.dataRead("text.txt");
    			// //System.out.println(st);
    			// //String st = new String("asldfkjlsdkfj");
    			// //test.dataWrite("text.txt",st);
    			// //test.creatFile("D:/HaiGe/mycode/L2-W4/代码练习/test","name1");
    		// }catch(IOException ie){
    			// System.out.println("IOException");
    		// }
    		
    		
    	}
    	
    	
    	//定义数据操作方法
    	
    	//在指定目录创建新文件
    	public File creatFile(String src) throws IOException{
    		String fileSrc = src;
    		File f = new File(fileSrc);
    		if(f.exists()){
    			return null;
    		}else{
    			try{
    				// 创建新文件
    				f.createNewFile();
                }catch (IOException e){
                    System.out.println("创建新文件时出现了错误。。。");
                    e.printStackTrace();
                }
    			return f;
    		}
    	}
    	
    	//定义数据读取方法,返回读取到的数据的字符串
    	public String dataRead(String srcFile) throws IOException{
    		String dataString;
    		File f = new File(srcFile);
    		FileReader fr = new FileReader(f);
    		char [] cbuf = new char[(int)f.length()];
    		fr.read(cbuf);
    		dataString = new String(cbuf);
    		fr.close();
    		return dataString;
    	}
    	//定义数据写入方法
    	public void dataWrite(String srcFile,String writeData) throws IOException{
    		String dataString;
    		File f = new File(srcFile);
    		FileWriter fw = new FileWriter(f);
    		fw.write(writeData);
    		fw.close();
    	}
    	//定义数据替换
    	public void dataReplace(String srcFile,String oldData,String newData) throws IOException{
    		//Fiel f= new File(srcFile);
    		
    	}
    	//数据查找
    	public void dataSearch(String allData,String tarData){
    		
    	}
    	//定义数据删除
    	public void dataDelete(String srcFile,String deleteData){
    		//String da = dataRead(srcFile);
    		
    	}
    
    }
    

      该记事本只是实现了简单的输入编辑保存等基本操作,主要用于巩固IO和UI的知识,不足之处,恳请各位指出!

     

     

  • 相关阅读:
    数据库+mysql
    网络并发项目
    网络编程 IO模型
    并发编程之死锁、进程池、协程
    类的使用
    面向对象—多态,反射
    面向对象-三大特性
    继承与派生
    面向对象
    模块进阶(二)
  • 原文地址:https://www.cnblogs.com/lcplcpjava/p/5718880.html
Copyright © 2020-2023  润新知