IO编程——记事本开发

package com.note;

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

import javax.swing.*;

public class NotePad extends JFrame implements ActionListener{
	
	//定义相关组件
	JTextArea jta = null;
	JScrollPane  jsp = null;
	JMenuBar jmb = null;
	JMenu jm1 = null;
	JMenu jm2 = null;
	JMenu jm3 = null;
	JMenu jm4 = null;
	JMenu jm5 = null;
	JMenuItem jmi1 = null;
	JMenuItem jmi2 = null;
	JMenuItem jmi3 = null;
	JMenuItem jmi4 = null;
	JMenuItem jmi5 = null;
	
	
	public static void main(String[] args) {
		NotePad np = new NotePad();

	}
	
	//构造函数
	public NotePad(){
		jta = new JTextArea();
		jsp = new JScrollPane(jta);//文本域加入滚动条
		jmb = new JMenuBar();
		jm1 = new JMenu("文件(F)");
		jm1.setMnemonic('F');
		jm2 = new JMenu("文件(E)");
		jm2.setMnemonic('E');
		jm3 = new JMenu("格式(O)");
		jm3.setMnemonic('O');
		jm4 = new JMenu("查看(V)");
		jm4.setMnemonic('V');
		jm5 = new JMenu("帮助(H)");
		jm5.setMnemonic('H');
		jmi1 = new JMenuItem("新建(N)");
		
		jmi2 = new JMenuItem("打开(O)");
		jmi2.addActionListener(this);
		jmi2.setActionCommand("open");
		
		jmi3 = new JMenuItem("保存(S)");
		jmi3.addActionListener(this);
		jmi3.setActionCommand("save");
		
		
		this.setJMenuBar(jmb);
		//加入菜单工具条
		jmb.add(jm1);
		jmb.add(jm2);
		jmb.add(jm3);
		jmb.add(jm4);
		jmb.add(jm5);
			//加入文件菜单项
		jm1.add(jmi1);
		jm1.add(jmi2);
		jm1.add(jmi3);
		
		
		this.add(jsp);	//带滚动的文本域
		
		this.setTitle("NotePad-Java Version");
		this.setSize(800, 500);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
		
	}

	@Override
	public void actionPerformed(ActionEvent e) {
			//选择打开文件
		if (e.getActionCommand().equals("open")){
			JFileChooser jfc = new JFileChooser();
			jfc.setDialogTitle("请选择文件...");
			jfc.showOpenDialog(null);
			jfc.setVisible(true);
			//得到打开文件的绝对路径
			String filePath = jfc.getSelectedFile().getAbsolutePath();

			FileReader fr = null;
			BufferedReader br = null;
			
			try {
				fr = new FileReader(filePath);
				br = new BufferedReader(fr);
				//从文件中读取文本并显示到jta
				String str = "";
				String allStr = "";
				while ((str = br.readLine()) != null){
					allStr += str+"\r\n";
				}
				//显示文本
				jta.setText(allStr);
				
			} catch (Exception e1) {
				// TODO 自动生成的 catch 块
				e1.printStackTrace();
			}finally{
				try {
					br.close();
					fr.close();
				} catch (Exception e1) {
					// TODO 自动生成的 catch 块
					e1.printStackTrace();
				}
				
			}
		
		}
		else if (e.getActionCommand().equals("save")){
			JFileChooser jfc = new JFileChooser();
			jfc.setDialogTitle("另存为...");
			jfc.showSaveDialog(null);
			jfc.setVisible(true);
			
			//得到文件保存的路径
			String filePath = jfc.getSelectedFile().getAbsolutePath();
			//写入文件
			FileWriter fw = null;
			BufferedWriter bw = null;
			try {
				fw = new FileWriter(filePath);
				bw = new BufferedWriter(fw);
				
				//写入文本
				bw.write(this.jta.getText());
				
				
			} catch (Exception e1) {
				// TODO 自动生成的 catch 块
				e1.printStackTrace();
			}finally{
				try {
					bw.close();
					fw.close(); //FileWriter必须后关闭,否则文件不会正常保存
				} catch (Exception e1) {
					// TODO 自动生成的 catch 块
					e1.printStackTrace();
				}
			
			}
			
		}
		
	}
	
	

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值