黑马程序员技术交流社区

标题: 关于保存文件的一个小问题. [打印本页]

作者: 陈中岩    时间: 2013-4-26 01:55
标题: 关于保存文件的一个小问题.
本帖最后由 陈中岩 于 2013-4-26 22:24 编辑

我先描述一下问题.我是一步一步跟着毕老师的视频做的.但是我的保存之后,保存的对话框并没有关闭.请问是什么原因,
第二个问题:我的文件已经有了,但是再进行保存的时候,仍然进行弹窗.

代码如下:
  1. package test11;
  2. //练习-打开文件
  3. import java.awt.*;
  4. import java.awt.event.*;
  5. import java.io.*;
  6. class MyMenuTest {
  7.         private Frame f;
  8.         private MenuBar bar;//菜单栏
  9.         private Menu fileMenu;//菜单
  10.         private MenuItem openItem,saveItem,closeItem;//子菜单
  11.         private FileDialog openDia,saveDia;//打开,保存
  12.         private TextArea ta;//文本区域
  13.         private File file;
  14.         
  15.         MyMenuTest()
  16.         {
  17.                 init();
  18.         }
  19.         public void init()
  20.         {
  21.                 f = new Frame();
  22.                 f.setBounds(100,100,500,600);
  23.                 //f.setLayout(new FlowLayout());
  24.                
  25.                 bar = new MenuBar();
  26.                 fileMenu = new Menu("文件");
  27.                 closeItem = new MenuItem("退出");
  28.                 openItem = new MenuItem("打开");
  29.                 saveItem  = new MenuItem("保存");
  30.                 ta = new TextArea();
  31.                
  32.                 f.setMenuBar(bar);//添加菜单
  33.                 bar.add(fileMenu);//添加"文件"
  34.                 fileMenu.add(openItem);
  35.                 fileMenu.add(saveItem);
  36.                 fileMenu.add(closeItem);
  37.                 f.add(ta);//文本区域
  38.                
  39.                
  40.                 openDia = new FileDialog(f,"我要打开",FileDialog.LOAD);
  41.                 saveDia = new FileDialog(f,"我要保存",FileDialog.SAVE);
  42.                
  43.                 myEvent();
  44.                 f.setVisible(true);
  45.         }
  46.         public void myEvent()
  47.         {
  48.                 //保存的事件
  49.                 saveItem.addActionListener(new ActionListener()
  50.                 {
  51.                         public void actionPerformed(ActionEvent e)
  52.                         {
  53.                                 //弹与不弹就看文件存不存在..
  54.                                 if(file==null)
  55.                                 {   //弹出
  56.                                         saveDia.setVisible(true);
  57.                                 
  58.                                 String dirPath = saveDia.getDirectory();//路径
  59.                                 String fileName = saveDia.getFile();//名字
  60.                                 if(dirPath==null || fileName==null)//如果有一个为空的话,那么就返回
  61.                                         return ;
  62.                                 file = new File(dirPath+fileName);
  63.                                 }
  64.                                 try
  65.                                 {
  66.                                         BufferedWriter bufw = new BufferedWriter(new FileWriter(file));
  67.                                        
  68.                                         String text = ta.getText();
  69.                                         bufw.write(text);
  70.                                         bufw.close();
  71.                                 }
  72.                                 catch(IOException ex)
  73.                                 {
  74.                                         throw new RuntimeException();
  75.                                 }
  76.                         }
  77.                 });
  78.                
  79.                
  80.                
  81.                 //打开的事件
  82.                 openItem.addActionListener(new ActionListener()
  83.                 {
  84.                         public void actionPerformed(ActionEvent e)
  85.                         {
  86.                                 openDia.setVisible(true);//显示
  87.                                 String dirPath = openDia.getDirectory();//路径
  88.                                 String fileName = openDia.getFile();//名字
  89.                                 System.out.println(dirPath+fileName);
  90.                                 if(dirPath==null || fileName==null)//如果有一个为空的话,那么就返回
  91.                                         return ;
  92.                                 ta.setText("");//添加下个文件之前先清空文本区域
  93.                                 file = new File(dirPath+fileName);
  94.                                 try
  95.                                 {
  96.                                         BufferedReader bufr = new BufferedReader(new FileReader(file));
  97.                                         String line = null;
  98.                                         while((line=bufr.readLine())!=null)
  99.                                         {
  100.                                                 ta.append(line+"\r\n");
  101.                                         }
  102.                                         bufr.close();
  103.                                 }
  104.                                 catch(IOException es)
  105.                                 {
  106.                                         throw new RuntimeException("读取失败");
  107.                                 }
  108.                         }
  109.                 });
  110.                
  111.                 saveItem.addActionListener(new ActionListener()
  112.                 {
  113.                         public void actionPerformed(ActionEvent e)
  114.                         {
  115.                                 saveDia.setVisible(true);
  116.                         }
  117.                 });
  118.                
  119.                
  120.                 //f的窗口事件
  121.                 f.addWindowListener(new WindowAdapter()
  122.                 {
  123.                         public void windowClosing(WindowEvent e)
  124.                         {
  125.                                 System.exit(0);
  126.                         }
  127.                 });
  128.                 closeItem.addActionListener(new ActionListener()
  129.                 {
  130.                         public void actionPerformed(ActionEvent e)
  131.                         {
  132.                                 System.exit(0);
  133.                         }
  134.                 });
  135.         }

  136.         public static void main(String[] args)
  137.         {
  138.                 new MyMenuTest();
  139.         }
  140. }
复制代码

作者: 陈中岩    时间: 2013-4-26 22:24
等了一天也木有人帮我解答,自己动手琢磨了2个小时才发现,竟然重复了一块代码

saveItem.addActionListener(new ActionListener()

                {

                        public void actionPerformed(ActionEvent e)

                        {

                                saveDia.setVisible(true);

                        }

                });





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2