/**
 * 利用I/O编程写的比较功能简单的记事本
 */
package notepad;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JTextArea;

public class Notepad extends JFrame implements ActionListener{
 //定义需要的组件、
 JTextArea jta=null;
 //定义菜单条
 JMenuBar jmb=null;
 //定义菜单条里面的菜单选项
 JMenu ju=null;
 //定义菜单选项里面的内容
 JMenuItem jmi=null;
 JMenuItem jmi1=null;
    public static void main(String args[]){
     Notepad np=new Notepad();
    }
 //定义构造方法用来初始化组件
 public Notepad(){
  jta=new JTextArea();
  jmb=new JMenuBar();
  ju=new JMenu("文件");
  jmi=new JMenuItem("打开");
  //给文本域注册监听
  jmi.addActionListener(this);
  //添加一个打开命令
  jmi.setActionCommand("open");
  jmi1=new JMenuItem("保存");
  jmi1.addActionListener(this);
  //添加一个保存命令
  jmi1.setActionCommand("save");
  //将文本域添加到容器里面去
  this.add(jta);
  //将菜单条添加到文本域里面
  this.setJMenuBar(jmb);
  //将菜单选项添加到菜单条里面
  jmb.add(ju);
  //给菜单选项添加内容  
  ju.add(jmi);
  
  ju.add(jmi1);
  //设置大小和默认关闭方式
  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  //设置窗体大小
  this.setSize(500, 500);
  //设置可见性
  this.setVisible(true);
 }
 /* (non-Javadoc)
  * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
  */
 @Override
 public void actionPerformed(ActionEvent arg0) {
  // TODO Auto-generated method stub
  if(arg0.getActionCommand().equals("open")){
   //使用JFileChooser来弹出文件选择面板
   JFileChooser jfc=new JFileChooser();
   //给文件面板起一个名字
   jfc.setDialogTitle("请选择文件");
   //选择默认打开方式
   jfc.showOpenDialog(null);
   //用来得到文件路径
   String path=jfc.getSelectedFile().getPath();
   //显示
   jfc.setVisible(true);
   FileReader fr=null;
   BufferedReader br=null;
   try {
    fr=new FileReader(path);
    br=new BufferedReader(fr);
    //建立一个字符串用来存储读到的字节
    String s="";
    //用一个字符串来存储最终结果
    String allcon="";
    while((s=br.readLine())!=null){
     allcon=allcon+s+"\r\n";
     //将字符串写到文本区域里面
     jta.setText(allcon);
    }
   } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }finally{
    try {
     fr.close();
     br.close();
    } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   
   }
   
   
  }else if(arg0.getActionCommand().equals("save")){
   //使用JFileChooser来弹出保存面板
   JFileChooser jfc=new JFileChooser();
   //给文件设置一个标题
   jfc.setDialogTitle("文件另存为........");
   //设置文件默认方式显示
   jfc.showSaveDialog(null);
   jfc.setVisible(true);
   FileWriter fw=null;
   FileReader fr=null;
   BufferedWriter bw=null;
   BufferedReader br=null;
   //用来得到文件路径
   String paths=jfc.getSelectedFile().getPath();
   try {
   // fr=new FileReader(jfc.get);
   // fw=new FileWriter(paths);
   // bw=new BufferedWriter(fw);
    bw.write(this.jta.getText());
     //  String s="";
    //   String allstring=jta.getText();
    //   while(bw.!=null){
     //   bw.write(s);
    //   }
    
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }finally{
    try {
     bw.close();
     fw.close();     
    } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   }
  }
 }
}