简单的打开 保存文件 小记事本

import java.awt.*;
import java.awt.event.*;
import java.io.*;
class MenuDemo 
{	
	private Frame f;
	//菜单组件 可添加菜单项及菜单组件
	private Menu m,m1,m2;
	//菜单栏
	private MenuBar mb;
	//菜单项
	private MenuItem closeMenu,mi2,mi3,openItem,saveItem;

	private FileDialog openDia,saveDia;
	private TextArea ta;
	File file = null;//文件对象
	MenuDemo()
	{
		init();
	}
	public void init()
	{
		f = new Frame("菜单练习");
		//窗体设置
		f.setBounds(200,100,600,600);
		//f.setLayout(new FlowLayout());//frame默认边界布局

		mb = new MenuBar();
		m = new Menu("文件");
		m1 = new Menu("一级菜单");
		m2 = new Menu("二级菜单");
		closeMenu = new MenuItem("退出");
		mi2 = new MenuItem("二级菜单项");
		mi3 = new MenuItem("三级退出");
		openItem = new MenuItem("打开");
		saveItem = new MenuItem("保存");
		saveItem.setShortcut(new MenuShortcut(KeyEvent.VK_S));//添加快捷命令
		//打开 保存 对话框
		openDia = new FileDialog(f,"打开",FileDialog.LOAD);
		saveDia = new FileDialog(f,"保存",FileDialog.SAVE);
		//文本框
		ta = new TextArea();

		//将菜单相关组件 添加到窗体
		f.setMenuBar(mb);//窗体添加菜单栏setMenuBar()
		mb.add(m);//MenuBar菜单栏中只能添加Menu不可以添加Menu的父类MenuItem
		m.add(openItem);
		m.add(saveItem);
		//m.addSeparator();//添加分割线 
		m.add(m1);
		m1.add(m2);
		m1.add(mi2);
		//m2.add(closeMenu);
		m2.add(mi3);
		m.add(closeMenu);
		f.add(ta);
	/*
	代码添加顺序就是图形的顺序  一个菜单项只有一个图形显示 当第二次添加同一个菜单项的时候
	之前添加此菜单项的语句被覆盖 或者说 失效
	*/
		myEvent();
		f.setVisible(true);
	}
	public void myEvent()
	{
		//为窗体添加 监听器
		f.addWindowListener(new WindowAdapter(){
			public void windowClosing(WindowEvent e)
			{
				System.exit(0);
			}
		});	
		//为菜单项 添加监听器
		closeMenu.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e)
			{
				System.exit(0);
			}
		});
		mi3.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e)
			{
				System.exit(0);
			}
		});
		openItem.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e)
			{
				openDia.setVisible(true);
				//打开文本文件 显示内容在文本框
				String dirPath = openDia.getDirectory();
				String fileName = openDia.getFile();
				System.out.println(dirPath+"...."+fileName);
				file = new File(dirPath,fileName);
				if(dirPath==null||fileName==null)
					return;
				ta.setText("");
				BufferedReader bfr = null;//局部变量必须赋初始值
				try
				{
					bfr = new BufferedReader(new FileReader(file));
					String line = null;
					while ((line = bfr.readLine())!=null)
					{
						//System.out.println(line);
						ta.append(line+"\r\n");//不要忘记添加换行符号
					}
				}
				catch (IOException io)
				{
					throw new RuntimeException("读取失败!");
				}
				finally
				{
					try
					{	
						if(bfr!=null)
							bfr.close();
					}
					catch (IOException ec)
					{
						throw new RuntimeException("guan失败!");
					}	
				}

			}
		});
		//为保存按钮添加监听 通过监听事件 执行动作:保存文本 到文件
		saveItem.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e)
			{
				if(file==null)
				{
					saveDia.setVisible(true);
					String dirPath = saveDia.getDirectory();
					String fileName = saveDia.getFile();
					file = new File(dirPath,fileName);
				}
				BufferedWriter bfw = null;
				try
				{
					bfw = new BufferedWriter(new FileWriter(file));
					String text = ta.getText();//返回文本组件内的文本
					bfw.write(text);
					bfw.flush();
				}
				catch (IOException ec)
				{
					throw new RuntimeException();
				}
				finally
				{
					try
					{	
						if(bfw!=null)
							bfw.close();
					}
					catch (IOException ec)
					{
						throw new RuntimeException("guan失败!");
					}	
				}
				
			}
		});

	}

	public static void main(String[] args) 
	{
		new MenuDemo();
	}
}