package hxy.widget.com;

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

import javax.swing.JFrame;



public class AboutDialog extends JFrame implements ActionListener {
	/**
	 * 
	 */
	private static final long serialVersionUID = 5210678447574536145L;
	private FileDialog filedialog_save, filedialog_load;
	private MenuBar menubar;//菜单栏
	private Menu menu;//菜单
	private MenuItem itemOpen, itemSave;//菜单项
	private TextArea text;//文本域
	private BufferedReader in;//从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
	private FileReader file_reader;//用于读取字符流。要读取原始字节流,请考虑使用 FileInputStream
	private BufferedWriter out;//将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。 
	private FileWriter file_writer;//用来写入字符文件的便捷类

	public AboutDialog() {
		super("打开/保存");
		setSize(800, 600);
		setVisible(true);
		menubar = new MenuBar();
		menu = new Menu("文件");
		itemOpen = new MenuItem("打开文件");
		itemSave = new MenuItem("保存文件");
		itemOpen.addActionListener(this);
		itemSave.addActionListener(this);
		menu.add(itemOpen);
		menu.add(itemSave);
		menubar.add(menu);
		setMenuBar(menubar);
		filedialog_save = new FileDialog(this, "保存文件",
				FileDialog.SAVE);
		filedialog_load = new FileDialog(this, "打开文件",
				FileDialog.LOAD);

		filedialog_save.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				filedialog_save.setVisible(false);
			}
		});
		filedialog_load.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				filedialog_load.setVisible(false);
			}
		});
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
		text = new TextArea("文本域。。");
		add(text, BorderLayout.CENTER);

	}

	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == itemOpen) {
			filedialog_load.setVisible(true);
			text.setText(null);//清除文本域
			String s;
			if (filedialog_load.getFile() != null) {
				try {
					File file = new File(filedialog_load.getDirectory(),
							filedialog_load.getFile());//获得所打开的文件
					file_reader = new FileReader(file);
					in = new BufferedReader(file_reader);
					while ((s = in.readLine()) != null) {//readLine()读取一个文本行
						text.append(s + '\n');//别忘了换行符
					}
					in.close();//关闭该流并释放与之关联的所有资源。
					file_reader.close();//关闭该流并释放与之关联的所有资源 ,FileReader中的close()继承自InputStreamReader
				} catch (IOException e2) {
				}
			}
		} else if (e.getSource() == itemSave) {
			filedialog_save.setVisible(true);
			if (filedialog_save.getFile() != null) {
				System.out.print(filedialog_save.getFile());
				try {
					File file = new File(filedialog_save.getDirectory(),
							filedialog_save.getFile());//获得要保存的文件
					file_writer = new FileWriter(file);
					out = new BufferedWriter(file_writer);
					/*
					 * public void write(String s,
                  	 *		int off,
                  	 *		int len)
           			 *	throws IOException
           			 *	-------------------------
           			 *	s - 要写入的字符串
					 *	off - 开始读取字符处的偏移量
					 *	len - 要写入的字符数 
					 *
					 */
					out.write(text.getText(), 0, (text.getText()).length());
					out.close();//关闭该流并释放与之关联的所有资源。
					file_writer.close();//关闭该流并释放与之关联的所有资源。
				} catch (IOException e2) {
				}
			}
		}
	}
	public static void main(String args[]) {
		new AboutDialog();
	}
}