java实现记事本

#java# /*
 * NotePad.java
 *
 * Created on __DATE__, __TIME__
 */

package com.MyJob;

import java.awt.event.*;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.JFileChooser;

/**
 *
 * @author  __USER__
 */
public class NotePad extends javax.swing.JFrame implements ActionListener {

	/** Creates new form NotePad */
	public NotePad() {
		initComponents();                         //注册监听
		this.itemCopy.addActionListener(this);
		this.itemZhuangTai.addActionListener(this);
		this.itemSave.addActionListener(this);
		this.itemPaste.addActionListener(this);
		this.itemOpen.addActionListener(this);
		this.itemNew.addActionListener(this);
		this.itemCut.addActionListener(this);
		this.itemDelete.addActionListener(this);
		this.itemExit.addActionListener(this);
		this.itemFont.addActionListener(this);
		this.mPaste.addActionListener(this);
		this.mCut.addActionListener(this);
		this.mCopy.addActionListener(this);
		this.mDelete.addActionListener(this);
		this.setLocationRelativeTo(null);               //窗体显示位置
	}

	/** This method is called from within the constructor to
	 * initialize the form.
	 * WARNING: Do NOT modify this code. The content of this method is
	 * always regenerated by the Form Editor.
	 */
	//GEN-BEGIN:initComponents
	// <editor-fold defaultstate="collapsed" desc="Generated Code">
	private void initComponents() {

		popMenu = new javax.swing.JPopupMenu();
		mCut = new javax.swing.JMenuItem();
		mCopy = new javax.swing.JMenuItem();
		mPaste = new javax.swing.JMenuItem();
		mDelete = new javax.swing.JMenuItem();
		jScrollPane1 = new javax.swing.JScrollPane();
		ta = new javax.swing.JTextArea();
		jMenuBar1 = new javax.swing.JMenuBar();
		mFile = new javax.swing.JMenu();
		itemNew = new javax.swing.JMenuItem();
		itemOpen = new javax.swing.JMenuItem();
		itemSave = new javax.swing.JMenuItem();
		jSeparator1 = new javax.swing.JSeparator();
		itemExit = new javax.swing.JMenuItem();
		mEdit = new javax.swing.JMenu();
		itemCut = new javax.swing.JMenuItem();
		itemCopy = new javax.swing.JMenuItem();
		itemPaste = new javax.swing.JMenuItem();
		itemDelete = new javax.swing.JMenuItem();
		mStyle = new javax.swing.JMenu();
		itemFont = new javax.swing.JMenuItem();
		mSee = new javax.swing.JMenu();
		itemZhuangTai = new javax.swing.JMenuItem();
		mHelp = new javax.swing.JMenu();
		jMenuItem1 = new javax.swing.JMenuItem();
		jMenuItem2 = new javax.swing.JMenuItem();

		mCut.setText("\u526a\u5207");
		popMenu.add(mCut);

		mCopy.setText("\u590d\u5236");
		popMenu.add(mCopy);

		mPaste.setText("\u7c98\u8d34");
		popMenu.add(mPaste);

		mDelete.setText("\u5220\u9664");
		popMenu.add(mDelete);

		setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

		ta.setColumns(20);
		ta.setRows(5);
		ta.addMouseListener(new java.awt.event.MouseAdapter() {//为鼠标注册监听
			public void mouseReleased(java.awt.event.MouseEvent evt) {
				taMouseReleased(evt);
			}
		});
		jScrollPane1.setViewportView(ta);

		mFile.setText("\u6587\u4ef6(F)");

		itemNew.setAccelerator(javax.swing.KeyStroke.getKeyStroke(
				java.awt.event.KeyEvent.VK_N,
				java.awt.event.InputEvent.CTRL_MASK));
		itemNew.setText("\u65b0\u5efa");
		mFile.add(itemNew);

		itemOpen.setAccelerator(javax.swing.KeyStroke.getKeyStroke(
				java.awt.event.KeyEvent.VK_O,
				java.awt.event.InputEvent.CTRL_MASK));
		itemOpen.setText("\u6253\u5f00");
		mFile.add(itemOpen);

		itemSave.setAccelerator(javax.swing.KeyStroke.getKeyStroke(
				java.awt.event.KeyEvent.VK_S,
				java.awt.event.InputEvent.CTRL_MASK));
		itemSave.setText("\u4fdd\u5b58");
		mFile.add(itemSave);
		mFile.add(jSeparator1);

		itemExit.setAccelerator(javax.swing.KeyStroke.getKeyStroke(
				java.awt.event.KeyEvent.VK_E,
				java.awt.event.InputEvent.CTRL_MASK));
		itemExit.setText("\u9000\u51fa");
		mFile.add(itemExit);

		jMenuBar1.add(mFile);

		mEdit.setText("\u7f16\u8f91(E)");

		itemCut.setAccelerator(javax.swing.KeyStroke.getKeyStroke(
				java.awt.event.KeyEvent.VK_X,
				java.awt.event.InputEvent.CTRL_MASK));
		itemCut.setText("\u526a\u5207");
		mEdit.add(itemCut);

		itemCopy.setAccelerator(javax.swing.KeyStroke.getKeyStroke(
				java.awt.event.KeyEvent.VK_C,
				java.awt.event.InputEvent.CTRL_MASK));
		itemCopy.setText("\u590d\u5236");
		mEdit.add(itemCopy);

		itemPaste.setAccelerator(javax.swing.KeyStroke.getKeyStroke(
				java.awt.event.KeyEvent.VK_V,
				java.awt.event.InputEvent.CTRL_MASK));
		itemPaste.setText("\u7c98\u8d34");
		mEdit.add(itemPaste);

		itemDelete.setAccelerator(javax.swing.KeyStroke.getKeyStroke(
				java.awt.event.KeyEvent.VK_DELETE,
				java.awt.event.InputEvent.CTRL_MASK));
		itemDelete.setText("\u5220\u9664");
		mEdit.add(itemDelete);

		jMenuBar1.add(mEdit);

		mStyle.setText("\u683c\u5f0f(O)");

		itemFont.setAccelerator(javax.swing.KeyStroke.getKeyStroke(
				java.awt.event.KeyEvent.VK_F,
				java.awt.event.InputEvent.CTRL_MASK));
		itemFont.setText("\u5b57\u4f53");
		mStyle.add(itemFont);

		jMenuBar1.add(mStyle);

		mSee.setText("\u67e5\u770b(V)");

		itemZhuangTai.setText("\u72b6\u6001\u680f");
		mSee.add(itemZhuangTai);

		jMenuBar1.add(mSee);

		mHelp.setText("\u5e2e\u52a9(H)");

		jMenuItem1.setText("\u4ea7\u770b\u5e2e\u52a9");
		mHelp.add(jMenuItem1);

		jMenuItem2.setText("\u5173\u4e8e\u8bb0\u4e8b\u672c");
		mHelp.add(jMenuItem2);

		jMenuBar1.add(mHelp);

		setJMenuBar(jMenuBar1);

		javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
				getContentPane());
		getContentPane().setLayout(layout);
		layout.setHorizontalGroup(layout.createParallelGroup(
				javax.swing.GroupLayout.Alignment.LEADING).addComponent(
				jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING,
				javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE));
		layout.setVerticalGroup(layout.createParallelGroup(
				javax.swing.GroupLayout.Alignment.LEADING).addComponent(
				jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING,
				javax.swing.GroupLayout.DEFAULT_SIZE, 279, Short.MAX_VALUE));

		pack();
	}// </editor-fold>
	//GEN-END:initComponents

	private void taMouseReleased(java.awt.event.MouseEvent evt) {      //鼠标监听的实现方法
		// TODO add your handling code here: 
		if(evt.isPopupTrigger()){                                     //如果触发鼠标右击执行操作
			this.popMenu.show(this.ta, evt.getX(),evt.getY());
		}
		
		
	}
	/**
	 * @param args the command line arguments
	 */
	public static void main(String args[]) {
		java.awt.EventQueue.invokeLater(new Runnable() {
			public void run() {
				new NotePad().setVisible(true);
			}
		});
	}

	//GEN-BEGIN:variables
	// Variables declaration - do not modify
	private javax.swing.JMenuItem itemCopy;
	private javax.swing.JMenuItem itemCut;
	private javax.swing.JMenuItem itemDelete;
	private javax.swing.JMenuItem itemExit;
	private javax.swing.JMenuItem itemFont;
	private javax.swing.JMenuItem itemNew;
	private javax.swing.JMenuItem itemOpen;
	private javax.swing.JMenuItem itemPaste;
	private javax.swing.JMenuItem itemSave;
	private javax.swing.JMenuItem itemZhuangTai;
	private javax.swing.JMenuBar jMenuBar1;
	private javax.swing.JMenuItem jMenuItem1;
	private javax.swing.JMenuItem jMenuItem2;
	private javax.swing.JScrollPane jScrollPane1;
	private javax.swing.JSeparator jSeparator1;
	private javax.swing.JMenuItem mCopy;
	private javax.swing.JMenuItem mCut;
	private javax.swing.JMenuItem mDelete;
	private javax.swing.JMenu mEdit;
	private javax.swing.JMenu mFile;
	private javax.swing.JMenu mHelp;
	private javax.swing.JMenuItem mPaste;
	private javax.swing.JMenu mSee;
	private javax.swing.JMenu mStyle;
	private javax.swing.JPopupMenu popMenu;
	private javax.swing.JTextArea ta;
	
	String clipboard;//用于剪切或是复制时临时储存数据
	
	// End of variables declaration//GEN-END:variables
	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		String s = e.getActionCommand();              //接收触发的按键名称
		JFileChooser jfc = new JFileChooser();        //JFileChooser用来提供一个文件对话框,可以通过其showXxxDialog打开一个模态对话框,或直接实例化并加入到其他组件。
		if(s.equals("打开")){			
			int result = jfc.showOpenDialog(this);    //创建变量接收文件选择器状态
			if(result == JFileChooser.OPEN_DIALOG){ //判断是否打开视图
				File fname = jfc.getSelectedFile();  //用fname将取出的文件名及路径保存
				FileReader fr = null;                //定义文件字节输入流,并初始化为null
				BufferedReader br = null;
				try {
					fr=new FileReader(fname);       //创建文件输入流对象,以fname为参数
					br=new BufferedReader(fr);		//创建文件输出流对象,以文件输入流对象做实参
					String line = br.readLine();	//读取一个文本行。通过下列字符之一即可认为某行已终止:换行 ('\n')、回车 ('\r') 或回车后直接跟着换行。 包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null 
					while (line!=null){				//判断是否读到行尾
						this.ta.append(line +"\n");//像指定的文档内添加指定字符
						line = br.readLine();		//从新读入下一行
					}
								
				} catch (FileNotFoundException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}finally{
					try {
						fr.close();
						br.close();
					} catch (IOException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}					
				}			
			}
		}		
		else if(s.equals("保存")){
			int result = jfc.showSaveDialog(this);
			if(result == JFileChooser.APPROVE_OPTION){
				File f = jfc.getSelectedFile();        //返回选中的文件。可由程序员通过 setFile 或者通过用户操作(如在 UI 中键入文件名,或者从 UI 中的列表内选择文件)来进行此设置。 
				FileWriter fw = null;
				BufferedWriter bw = null;
				try {
					fw = new FileWriter(f);        //创建文件输出流,用文件路径做参数
					bw = new BufferedWriter(fw);	//创建缓冲输出流
					String con = this.ta.getText();
					String[] strs = con.split("\n");
					for(int i = 0;i<strs.length;i++){
						bw.write(strs[i]);
						bw.newLine();
					}
					bw.flush();
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}				
			}			
		}	
		else if(s.equals("退出")){
			System.exit(0);
		}else if(s.equals("剪切")){
			System.out.print(s);
			int start = ta.getSelectionStart();//获取选取内容的开始位置
			int end = ta.getSelectionEnd();
			clipboard = ta.getSelectedText();//将选中内容复制到剪切板
			ta.replaceRange("", start, end);//替换选中区域内容			
		}else if(s.equals("复制")){
			System.out.print(s);
			clipboard = ta.getSelectedText();
		}else if(s.equals("粘贴")){
			System.out.print(s);
			int position = 0;
			position = ta.getCaretPosition();//获取光标位置
			ta.insert(clipboard, position);//将剪切板内容插入到指定地点
		}else if(s.equals("删除")){
			System.out.print(s);
			int start = ta.getSelectionStart();
			int end = ta.getSelectionEnd();
			ta.replaceRange("", start, end);			
		}else if(s.equals("字体")){
			System.out.print(s);
			FontDialog fd = new FontDialog(this,true);
			fd.setVisible(true);
			this.ta.setFont(fd.f);  //调用外部类
		}
	}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值