A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 燕国庆 高级黑马   /  2012-11-26 18:12  /  1331 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 燕国庆 于 2012-11-26 23:07 编辑

package cn.guoqing;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class MyMenu1 {
//声明相关的组件
Frame f;
MenuBar mb;
Menu m;
Menu subm;
MenuItem mi;
MenuItem submi;
MenuItem openFile;
MenuItem saveFile;
FileDialog savefd;
FileDialog openfd;
TextArea ta;
File f2;

//构造函数调用innit()函数初始化
MyMenu1(){
  init();
  
}
//初始化相关的组件
public void init(){
  f=new Frame("MY MENU");
  f.setBounds(300, 40, 750, 560);
  //f.setLayout(new FlowLayout());
  
  mb=new MenuBar();
  m=new Menu("文件");
  mi=new MenuItem("退出");
  subm=new Menu("子菜单");
  submi=new MenuItem("子条目");
  openFile=new MenuItem("打开");
  saveFile=new MenuItem("保存");
  savefd=new FileDialog(f,"我的保存",FileDialog.SAVE);
  openfd=new FileDialog(f,"我的打开",FileDialog.LOAD);
  ta=new TextArea();
  
  subm.add(submi);
  m.add(mi);
  m.add(subm);
  m.add(openFile);
  m.add(saveFile);
  mb.add(m);
  f.add(ta);
  f.setMenuBar(mb);//setMenuBar(MenuBar mb) 将此窗体的菜单栏设置为指定的菜单栏
  f.setVisible(true);//使窗体可见
  event();    //调用此方法,否则没有相应的事件反应执行
  
}
  //添加具体的事件
public void event(){
  //为打开菜单项添加事件处理
  openFile.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent e){
    openfd.setVisible(true);//使打开文件对话框可见
    String path=openfd.getDirectory();//通过打开文件对话框对象获得所选文件的路径
    String fname=openfd.getFile();//通过打开文件对话框对象获得所选文件的名称。
    if(path==null||fname==null){
     System.out.println("path="+path+"---fname="+fname);
     return;
     }
     
    f2=new File(path,fname);//将路径和名称封装成文件对象
    ta.setText("");//使在每次选完文件后使文本区域的数据清空。
    System.out.println("path="+path+"fname="+fname);
    BufferedReader bufr=null;
    try{
     
      bufr=new BufferedReader(new FileReader(f2));//利用缓冲技术,
      String line=null;
      while((line=bufr.readLine())!=null){//利用缓冲流对象每次读取一行数据
       ta.append(line+"\r\n"); //利用文本区域对象将上面所读取的每行数据加入到ta中,并换行。
      }
    }
    catch(IOException ex){
     throw new RuntimeException("操作文件错误!请注意!");
    }
    finally{
     
      try {
       if(bufr!=null)  // 判断缓冲流对象是否为空,若不为空关闭流资源
       bufr.close();
      } catch (IOException e1) {
      
       e1.printStackTrace();
      }
    }
   }
  });
  
  saveFile.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent e){
    if(f2==null){
     savefd.setVisible(true);
    String path=savefd.getDirectory();//通过打开文件对话框对象获得所选文件的路径
    String fname=savefd.getFile();//通过打开文件对话框对象获得所选文件的名称。
    f2=new File(path,fname);
    if(path==null||fname==null){
    System.out.println("path="+path+"---fname="+fname);
    return;
    }
}
    //ta.setText("");
    BufferedWriter bufw=null;    为什么在对已存在的而文件修改完保存不了修改后的结果,文件仍是原来的{:soso_e100:}有哪位大神帮忙看一下,纠结了半天了,就是找不出毛病来
    try{
     bufw=new BufferedWriter(new FileWriter(f2));
     String s=ta.getText();
     bufw.write(s);
     //bufw.flush();
    }
    catch(IOException e1){
     throw new RuntimeException();
    }
    finally{
     try{
      if(bufw!=null)
       bufw.close();
     }
     catch(IOException e2){
      System.out.println(e2.toString());
     }
    }
   }
  });
  
  mi.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent e){
    System.exit(0);
   }
  });
  f.addWindowListener(new WindowAdapter(){
   public void windowClosing(WindowEvent e){
    System.exit(0);
   }
  });
  
}

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

问题解决了,出去转了转,清醒多了

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

1 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马