java 记事本,实现了打开文件和存储文件

/*
 * 功能:我的记事本
 * 
 */

package com.test7;

import javax.swing.*;

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

public class Notepad extends JFrame implements ActionListener {
	//定义需要的组件
	JTextArea jta=null;
	//定义菜单条
	JMenuBar jmb=null;
	//第一个JMenu
	JMenu jm1=null;
	//定义JMenuItem
	JMenuItem jmi1=null;
	JMenuItem jmi2=null;
	
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Notepad np=new Notepad();

	}
	
	
	//构造函数
	public Notepad() 
	{
		//创建jta
		jta=new JTextArea();
		jmb=new JMenuBar();
		//放入到JFrame
		this.add(jta);
		jm1=new JMenu("文件");
		//设置助记符
		jm1.setMnemonic('F');
		jmi1=new JMenuItem("打开");
		//设置助记符
		jmi1.setMnemonic('O');
		//注册监听
		jmi1.addActionListener(this);
		jmi1.setActionCommand("open");
		jmi2=new JMenuItem("保存");
		//设置助记符
		jmi2.setMnemonic('S');
		//注册监听
		jmi2.addActionListener(this);
		jmi2.setActionCommand("save");
		
		//加入
		this.setJMenuBar(jmb);
		//把jm1放入jmb中
		jmb.add(jm1);
		//把jmi1放入当jm1中
		jm1.add(jmi1);
		jm1.add(jmi2);
		
		
		
		
		
		this.setTitle("记事本");
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE	);
		this.setSize(300,400);
		this.setVisible(true);
		
		
		
	}


	public void actionPerformed(ActionEvent arg0) {
		// TODO Auto-generated method stub
		//判断是哪个菜单被选中
		if(arg0.getActionCommand().equals("open"))
		{
//			System.out.println("打开");
			//隆重推荐一个组件,JFileChooser
			//文件选择组件
			JFileChooser jfc1=new JFileChooser();
			//设置名字
			jfc1.setDialogTitle("请选择文件...");
			//默认方式
			jfc1.showOpenDialog(null);
			//显示
			jfc1.setVisible(true);
			//得到用户选择的文件路径
			
			String filename=jfc1.getSelectedFile().getAbsolutePath();
//			System.out.println(filename);
			FileReader fr=null;
			BufferedReader br=null;
			
			try {
				fr=new FileReader(filename);
				br=new BufferedReader(fr);
				
				//从文件中循环读取,并显示到jta中
				String s="";
				String allCon="";
				while((s=br.readLine())!=null)
				{
					//显示到jta
					allCon+=s+"\r\n";
			
				}
				//放置到jta中
				jta.setText(allCon);
				
				
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			finally 
			{
				try {
					fr.close();
					br.close();
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}

				
			}
			
			
			
		}
		else	if(arg0.getActionCommand().equals("save"))
		{
			//出现保存对话框
			JFileChooser jfc2=new JFileChooser();
			jfc2.setDialogTitle("另存为...");
			//按默认方式显示
			jfc2.showSaveDialog(null);
			jfc2.setVisible(true);
			
			//得到用户希望把文件保存到何处,文件的全路径
			String filename2=jfc2.getSelectedFile().getAbsolutePath();
			
			
			//准备写入到指定文件
			FileWriter fw=null;
			BufferedWriter bw=null;
			
			try {
				fw=new FileWriter(filename2);
				bw=new BufferedWriter(fw);
				//自己优化
				bw.write(this.jta.getText());
				
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			finally
			{
				try {
					bw.close();
					fw.close();
					
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
				
				
				
			}
			
			
			
		}
		
		
	}
	
	
	

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值