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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 何超 中级黑马   /  2013-11-18 21:04  /  1249 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 何超 于 2013-11-19 10:21 编辑
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import java.io.*;
  4. import java.awt.MenuBar.*;

  5. class A
  6. {
  7.         private Frame f;
  8.         private MenuBar bar;                //菜单栏
  9.         private Menu fileMenu,subMenu,TryMenu;                        //菜单
  10.         private MenuItem closeItem,subItem,openItem,saveItem;        //菜单项
  11.         private TextArea ta;


  12.         private File file;

  13.         
  14.         
  15.         private FileDialog openDia,saveDia;        

  16.         A()
  17.         {
  18.                 init();
  19.         }


  20.         public void init()
  21.         {
  22.                 f=new Frame("my window");
  23.                 f.setBounds(300,100,500,600);
  24.                 //f.setLayout(new FlowLayout());去掉布局默认为边界布局,此时可以让布局大小随着TextArea的变化而变化

  25.                 ta=new TextArea();

  26.                 bar=new MenuBar();

  27.                 fileMenu=new Menu("文件");

  28.                 subMenu=new Menu("子菜单");

  29.                 openItem=new MenuItem("打开");
  30.                 saveItem=new MenuItem("保存");
  31.                 closeItem=new MenuItem("退出");
  32.                 subItem=new MenuItem("子条目");
  33.                                                                                                                                 

  34.                                                                                 TryMenu=new Menu("Try");
  35.                 fileMenu.add(openItem);
  36.                 fileMenu.add(saveItem);
  37.                 fileMenu.add(closeItem);                                                        bar.add(TryMenu);
  38.                 bar.add(fileMenu);        //菜单栏添加菜单                                             

  39.                 f.setMenuBar(bar);
  40.                 f.setVisible(true);
  41.                 f.add(ta);                                                                                                        


  42.                 fileMenu.add(subMenu);//菜单添加菜单
  43.                 subMenu.add(subItem);//菜单添加菜单项


  44.                 openDia= new FileDialog(f,"我要打开",FileDialog.LOAD);
  45.                 saveDia= new FileDialog(f,"我要保存",FileDialog.SAVE);



  46.                 myEvent();
  47.         }


  48.         public void  myEvent()
  49.         {

  50.                 closeItem.addActionListener(new ActionListener()
  51.                 {
  52.                         public void actionPerformed(ActionEvent e)
  53.                         {
  54.                                 System.exit(0);
  55.                         }
  56.                 });


  57.                 f.addWindowListener(new WindowAdapter()
  58.                         {
  59.                                 public void windowClosing(WindowEvent e)
  60.                                 {
  61.                                         System.exit(0);
  62.                                 }
  63.                         });






  64.                 openItem.addActionListener(new ActionListener()
  65.                 {
  66.                         public void actionPerformed(ActionEvent e)
  67.                         {
  68.                                 openDia.setVisible(true);
  69.                                 String dirPath=openDia.getDirectory();
  70.                                 String FileName=openDia.getFile();

  71.                                 if(dirPath==null || FileName==null)
  72.                                         return ;
  73.                                 file=new File(dirPath,FileName);
  74.                                 
  75.                                 try
  76.                                 {               
  77.                                         ta.setText("");
  78.                                         BufferedReader bufr=new BufferedReader(new FileReader(file));
  79.                                         String line=null;
  80.                                         while((line=bufr.readLine())!=null)
  81.                                         {
  82.                                                 
  83.                                                 ta.append(line+"\r\n");                                       
  84.                                         }

  85.                                         bufr.close();
  86.                                 }
  87.                                 catch(IOException e1)
  88.                                 {
  89.                                         throw new RuntimeException("读取文件失败");
  90.                                 }               
  91.                         }
  92.                 });
  93.                 saveItem.addActionListener(new ActionListener()
  94.                 {
  95.                         public void actionPerformed(ActionEvent e2)
  96.                         {
  97.                                 if(file==null)
  98.                                  saveDia.setVisible(true);

  99.                                 String dirPath=saveDia.getDirectory();
  100.                                 String fileName=saveDia.getFile();
  101.                                 if(dirPath==null || fileName==null)
  102.                                         return ;
  103.                                 file=new File(dirPath,fileName);
  104.                                 try
  105.                                 {
  106.                                         BufferedWriter bufw=new BufferedWriter(new FileWriter(file));
  107.                                         String text=ta.getText();

  108.                                         bufw.write(text);
  109.                                         bufw.close();
  110.                                 }
  111.                                 catch(IOException e3)
  112.                                 {
  113.                                         throw new RuntimeException("写入数据失败");
  114.                                 }
  115.                         }
  116.                 });

  117.         }


  118.         public static void main(String[] args)
  119.         {
  120.                  new A();
  121.         }        
  122. }
复制代码
代码如上  没有错误,这个程序可以打开对应文本,可以保存自定义文本,
但是  对于已存在的文本无法更改。

1.txt 在我打开这个程序之前已经存在了 那么我怎样也无法在这个程序中对它进行修改(我先打开它,然后修改点保存 (此时不会弹出save的对话框说明file的地址是存在的)  可是1.txt的内容毫无变化 这个时候我只操作一部就是打开1.txt 再也没其他文本的步骤 file的地址应该就是1.txt的啊 为什么修改不成功)


2.txt 是我打开文本之后自己在TextArea中输入一点东西之后保存的文本  之后我在文本中修改是可以对2.txt修改的   并且如果我之后不关闭程序继续用这个程序打开1.txt文本 并对其进行保存  (此时不会弹出save的对话框说明file的地址是存在的) 1.txt的内容会直接进入2.txt而不是1.txt (说明save的file地址始终指向2.txt)
这个情况是怎么回事 求告知,我觉得应该是 file的指向问题,但是具体在哪里不知道!!!

点评

FFF
为什么代码会那么长?  发表于 2013-11-19 00:13

2 个回复

倒序浏览
FFF 金牌黑马 2013-11-19 00:13:47
沙发
如果问题已经解决,请及时修改主题为“提问结束”。
修改主题的方法链接
http://bbs.itheima.com/thread-89313-1-1.html
如果没有解决,可能你的问题问得不够清楚。可以重新发问的哦~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马