黑马程序员-做一个像文本档一样的小软件

来源:互联网 发布:董云飞老师网络公开课 编辑:程序博客网 时间:2024/04/20 11:48

------- android培训、java培训、期待与您交流! ----------

//做一个像文本文档一样的小程序

//需求,做一个像文本文档一样的程序  功能只有打开,保存以及退出三个功能
public class GUIMenu {

 /**
  * 步骤:
  * 1.设置一个frame窗体
  * 2.在frame中加入菜单栏,在菜单栏里加入菜单和子菜单
  * 3.通过流的方式,保存和打开文件
  * @param args
  */
 private Frame frame;
 private TextArea ta;
 private MenuBar fileBar;
 private Menu fileMenu;
 private MenuItem openItem;
 private MenuItem savaItem;
 private MenuItem exitItem;
 private FileDialog openDia;
 private File file;
 public GUIMenu(){
  //1.对frame进行基本的设置
  frame = new Frame("文本文档");
  frame.setBounds(300, 100, 650, 600);
  //注,因为窗体中除了菜单栏全是文本区域,所以采用边界布局 frame默认的便是边界布局
  //2.对菜单项及子菜单进行进本设置
  fileMenu = new Menu("文件");
  openItem = new MenuItem("打开");
  savaItem = new MenuItem("保存");
  exitItem = new MenuItem("退出");
 
  openDia = new FileDialog(frame,"打开",FileDialog.LOAD);
  //3.菜单里添加子菜单
  fileMenu.add(openItem);
  fileMenu.add(savaItem);
  fileMenu.add(exitItem);
  //菜单栏里添加菜单
  fileBar = new MenuBar();
  fileBar.add(fileMenu);
  
  //4.创建文本区域
  ta = new TextArea(); //不对其基本设置,默认
  
  //5.往窗体中添加菜单栏和文本域
  frame.setMenuBar(fileBar);
  frame.add(ta);
  myEvent();
  frame.setVisible(true);
 }
 //对窗体中的组件添加监听
 private void myEvent(){
  frame.addWindowListener(new WindowAdapter(){
   public void windowClosing(WindowEvent e){
    System.exit(0);
   }
  });
  //对打开的条目添加监听器
  openItem.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent d){
    openDia.setVisible(true);
    String fileDir=openDia.getDirectory();
    //获取文件名称
    String fileName=openDia.getFile();
    if(fileDir==null||fileName==null)//必须在这对获取的文件名称及文件名进行判断
     //否则在file对象中会出现空指针异常
     return ;
    ta.setText(null);//对文本区域的内容进行清空
    file = new File(fileDir,fileName);
    try {
     BufferedReader bis = new BufferedReader(
       new FileReader(file));
     String line=null;
     while((line=bis.readLine())!=null){
      ta.append(line+"\r\n");//要加入回车符
     }
     bis.close();//对流进行关闭,释放资源
     
    } catch (Exception e) {
     // TODO: handle exception
    }
    
   }
  });
  savaItem.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent e){
    if(file==null){//这里的判断,如果文件为空,则说明是新写的文件,不是在原有的基础上添加的,所以从新获取目的
     FileDialog savaDia = new FileDialog(frame,"保存",FileDialog.SAVE);
     savaDia.setVisible(true);
     String fileDir=openDia.getDirectory();
     //获取文件名称
     String fileName=openDia.getFile();
     if(fileDir==null||fileName==null)//必须在这对获取的文件名称及文件名进行判断
      //否则在file对象中会出现空指针异常
      return ;
     file = new File(fileDir,fileName);
    }
    try {
     BufferedWriter bufw = new BufferedWriter(
       new FileWriter(file));
     String mes = ta.getText();
     bufw.write(mes);
     bufw.flush();
     bufw.close();
    } catch (Exception e2) {
     // TODO: handle exception
    }
   }
  });
 }
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  new GUIMenu();
 }

}

 

原创粉丝点击