java记事本

package com.notepad.pojo;

import java.awt.;
import java.awt.event.
;
import java.io.*;
import java.text.Format;

import javax.swing.*;
import javax.swing.undo.UndoManager;

public class View_notepad extends JFrame implements ActionListener{

//第一步:定义记事本所需要的组件
	//1--菜单面板组件。
	JMenuBar menuBar; 
	
	//2--定义一级菜单组件  (六个一级菜单,分别是:文件,编辑,格式,查看,帮助,新建(这里注意,新建放到了文件菜单选项下面,后面会有相关的操作))
	JMenu menu1,menu2,menu3,menu4,menu5,menu6; 
	
	//3--定义二级菜单组件()
	JMenuItem menuitem1,menuitem2,menuitem3,menuitem4,menuitem5,menuitem6,menuitem7,menuitem8,menuitem9;
	
	//4--定义工具条
	JToolBar toolBar;
	
	//5--定义功能按钮
	JButton button1,button2,button3,button4,button5,button6;
	
	//6--定义文本域
	JTextArea textarea;
	
	//7--定义滚动条
	JScrollPane scroll;
	
//第二步:定义构造方法
	public View_notepad() {
		
		//1--将第一步定义的组件进行实例化。
		JMenuBar menuBar=new JMenuBar();
		
			//提示,实例化菜单组件的时候,给每个菜单组件加上名称。
		 menu1=new JMenu("文件");
		 menu2=new JMenu("编辑");
		 menu3=new JMenu("格式");
		 menu4=new JMenu("查看");
		 menu5=new JMenu("帮助");
		 
		 menu6=new JMenu("新建");//添加到menu1里面
		
		
		 menuitem1=new JMenuItem("打开");//添加到menu1里面
		 menuitem1.addActionListener(this); //添加监听者
		 menuitem1.setActionCommand("open");
		 
		 menuitem2=new JMenuItem("保存");//添加到menu1里面
		 menuitem2.addActionListener(this);
		 menuitem2.setActionCommand("save");
		 
		 menuitem3=new JMenuItem("另存为");//添加到menu1里面
		 menuitem3.addActionListener(this);
		 menuitem3.setActionCommand("lsave");
		 
		 menuitem6=new JMenuItem("全选");
		 menuitem6.addActionListener(this);
		 menuitem6.setActionCommand("selectAll");
		 
		 menuitem7=new JMenuItem("复制");
		 menuitem7.addActionListener(this);
		 menuitem7.setActionCommand("copy");
		 
		 menuitem8=new JMenuItem("粘贴");
		 menuitem8.addActionListener(this);
		 menuitem8.setActionCommand("paste");
		 
		 menuitem9=new JMenuItem("剪切");
		 menuitem9.addActionListener(this);
		 menuitem9.setActionCommand("cut");
		
		 menuitem4=new JMenuItem("文件");//添加到menu6里面
		 menuitem4.addActionListener(this);
		 menuitem4.setActionCommand("new");

		
		toolBar=new JToolBar();//工具条
		
		button1=new JButton(new ImageIcon("image/xinjian.png")); 
		button1.setToolTipText("新建");//实现对图片进行提示的效果。
		button1.addActionListener(this);
		button1.setActionCommand("new");
		
		button2=new JButton(new ImageIcon("image/chehui.png"));
		button2.setToolTipText("撤回");
		button2.addActionListener(this);
		button2.setActionCommand("withdraw");
		
		button3=new JButton(new ImageIcon("image/baocun.png")); 
		button3.setToolTipText("保存");
		button3.addActionListener(this);
		button3.setActionCommand("save");
		
		button4=new JButton(new ImageIcon("image/jianqie.png"));
		button4.setToolTipText("剪切");
		button4.addActionListener(this);
		button4.setActionCommand("cut");
		
		
		button5=new JButton(new ImageIcon("image/fuzhi.png")); 
		button5.setToolTipText("复制");
		button5.addActionListener(this);
		button5.setActionCommand("copy");
		
		
		button6=new JButton(new ImageIcon("image/zhantie.png"));
		button6.setToolTipText("粘贴");
		button6.addActionListener(this);
		button6.setActionCommand("paste");
		
		textarea=new JTextArea();
		
		textarea.getDocument().addUndoableEditListener(um);//创建撤消操作管理器
		
		
		
		scroll =new JScrollPane(textarea); //将滚动条和文本域关联起来.
		
		//2--将实例化过后的组件进行添加
		
		//提示,这里更具自己想要实现的效果,安排添加顺序。在这里,我将按照我要实现的效果进行添加。
			try {
				//a--menuitem4和menuitem5添加到menu6里面。
				menu6.add(menuitem4);
				
				//b--将menu6和menuitem1,menuitem2,menuitem3添加到menu1里面.
				menu1.add(menu6);
				menu1.addSeparator();//作用是,增加一条横线。(有没有均可);
				menu1.add(menuitem1); menu1.add(menuitem2); menu1.add(menuitem3);
				
				menu2.add(menuitem6);menu2.add(menuitem7);menu2.add(menuitem8);menu2.add(menuitem9);
				
				//c--将menu1,menu2,menu3,menu4,menu5添加到菜单面板里面(即:menuBar)
				menuBar.add(menu1);menuBar.add(menu2);menuBar.add(menu3);menuBar.add(menu4);menuBar.add(menu5);
				
				//d--将button组件添加到工具条组件里
				toolBar.add(button1);
				toolBar.add(button2);
				toolBar.add(button3);
				toolBar.add(button4);
				toolBar.add(button5);
				toolBar.add(button6);
			}
			catch(Exception e1) {
				
			}
			//e--将toolBar,menuBar,scroll添加到Frame里面,注意顺序
			
			this.setJMenuBar(menuBar);//菜单面板
			this.add(toolBar,BorderLayout.NORTH);
			this.add(scroll);
			
		//第三步:设置视图属性
			this.setTitle("记事本");
			this.setSize(400,280);
			this.setLocation(100, 100);
			this.setIconImage((new ImageIcon("image/notepad.PNG")).getImage());
			this.setResizable(true); //此处代码是控制页面是否课可以变化大小。
			this.setDefaultCloseOperation(EXIT_ON_CLOSE);
			this.setVisible(true);	
	}

// public void

//增加监听的方法
String file_path;//这个定义一个地址变量。
UndoManager um = new UndoManager();
public void actionPerformed(ActionEvent e) {
	
	//这里采用if语句来判断,用户点击的是哪一个按钮。
	if(e.getActionCommand().equals("open")) {
		
		//System.out.println("打开");
		
		//实现效果部分的代码
		JFileChooser wjxz=new JFileChooser();
		wjxz.setDialogTitle("打开文件");
		wjxz.showOpenDialog(null);
		wjxz.setVisible(true);
		
		//得到用户选择的路径
		file_path=wjxz.getSelectedFile().getAbsolutePath();

// System.out.println(file_path);

// FileReader file_path1=null;
InputStreamReader file_path1=null;
BufferedReader file_path2=null;

		//定义一个io流
		try {
			//抛异常
			file_path1 = new InputStreamReader( new FileInputStream(file_path),"UTF-8");  

// file_path1=new FileReader(file_path);
file_path2=new BufferedReader(file_path1);

			String text1="";
			String text2="";
			
			while((text1=file_path2.readLine())!=null) {
				text2+=text1+"\n";
			}
			textarea.setText(text2);//将读出来的内容,显示到文本域里面。		
		} catch (Exception e1) {}
		
		finally {		
			try {				
				file_path1.close();
				file_path2.close();	
			}
			catch(Exception e1) {}
		}
		
	}else if(e.getActionCommand().equals("save")&&(file_path==null)) {
			//文件保存
		
		//提示:如果当前的地址file_path为空的话,那就在打开一个页面,进行存储,此处的操作和另存为的操作相同。
		JFileChooser chooser = new JFileChooser();
		chooser.setDialogTitle("保存");
		chooser.showSaveDialog(null);
		chooser.setVisible(true);
		try {
			file_path=chooser.getSelectedFile().getPath();
			PrintStream text4=new PrintStream(file_path);
			System.setOut(text4);
			System.out.println(this.textarea.getText());
		}
		catch(Exception e1) {
			
		}
		

			
	}else if(e.getActionCommand().equals("save")&&(file_path!=null)) {
		
			//文件保存。
		
		try {
			//提示,如果当前的地址file_path不为空的话,直接采用这个地址进行存储就行。
			PrintStream text4=new PrintStream(file_path);
			System.setOut(text4);
			System.out.println(this.textarea.getText());
		}catch(Exception e1) {
			
		}
		
		
	}else if(e.getActionCommand().equals("lsave")) {
		JFileChooser ljxz=new JFileChooser();
		ljxz.setDialogTitle("将文件另存为");
		ljxz.showSaveDialog(null);
		ljxz.setVisible(true);
		
		//得到用户选择的保存路径
		String save_path=ljxz.getSelectedFile().getAbsolutePath();
		try {
			PrintStream text3=new PrintStream(save_path);
			System.setOut(text3);
			System.out.println(this.textarea.getText());
			
		} catch (Exception e1) {
			
		}
	}else if(e.getActionCommand().equals("selectAll")) {
		//全选文本
		textarea.selectAll();	//这是java给我们封装好的方法
	}else if(e.getActionCommand().equals("copy")) {
		//复制文本
		textarea.copy();   //这是java给我们封装好的方法
	}else if(e.getActionCommand().equals("paste")) {
		//粘贴文本
		textarea.paste();   //这是java给我们封装好的方法
	}else if(e.getActionCommand().equals("cut")) {
		//剪切文本
		textarea.cut();    //这是java给我们封装好的方法
	}else if(e.getActionCommand().equals("withdraw")) {
		//注意这里需要创建撤销管理器。
		if (um.canUndo()) {
		    um.undo();
		   }
	}else if(e.getActionCommand().equals("new")) {
		//新建
		 textarea.setText("");//清空文本内容
		 file_path = null; //存储地址设置为空。
	}
	
	
}

}

你可能感兴趣的:(java记事本)