黑马程序员技术交流社区

标题: GUI-保存对话框问题 [打印本页]

作者: 阿牛    时间: 2012-3-25 13:42
标题: GUI-保存对话框问题
问题:运行时,即使是修改已经存在的文件,点保存也会弹保存对话框,可我已经设置了if(file==null )时才弹的,可为什么只要点保存就弹,我觉得问题在我用颜色标出的部分,可我看不出啥问题来,大伙帮我看看。
import java.awt.*;
import java.awt.event.*;
import java.io.*;
class menuDemo
{
                private Frame f;
                private Menu m,m1;
                private MenuItem mi,java,open,save;
                private MenuBar mb;
                private FileDialog fdopen,fdsave;
                private TextArea ta;
                private File file;
                menuDemo()
        {
                        exec();
        }
        void exec()
        {
                f=new Frame();
                f.setBounds(200,300,400,400);
                //f.setLayout(new FlowLayout());
                mb=new MenuBar();
                m=new Menu("file");
                m1=new Menu("new");
                java=new MenuItem("java");
                mi=new MenuItem("exit");
                open=new MenuItem("open");
                save=new MenuItem("save");
                fdopen=new FileDialog(f,"open",FileDialog.LOAD);
                fdsave=new FileDialog(f,"save",FileDialog.SAVE);
                ta=new TextArea();


                f.setMenuBar(mb);
                f.add(ta);
                mb.add(m);
                m.add(m1);
                m.add(open);
                m.add(save);
                m1.add(java);
                m.add(mi);


                myEvent();
                f.setVisible(true);
        }
        void myEvent()
        {
                f.addWindowListener(new WindowAdapter()
                {
                        public void windowClosing (WindowEvent e)
                        {
                                System.exit(0);
                        }
                });
                mi.addActionListener(new ActionListener ()
                        {
                                public void actionPerformed (ActionEvent e)
                                {

                                        System.exit(0);
                                }
                        });
                        open.addActionListener(new ActionListener ()
                        {
                                public void actionPerformed (ActionEvent e)
                                {

                                        fdopen.setVisible(true);
                                        String dirPath=fdopen.getDirectory();
                                        String fileName=fdopen.getFile();
                                        ta.setText("");
                                        //System.out.println(dirPath+".."+fileName);
                                        File file=new File(dirPath,fileName);
                                        try
                                        {
                                                BufferedReader  bf=new BufferedReader(new FileReader(file));
                                                String line=null;
                                                        while((line=bf.readLine())!=null)
                                                        ta.append(line+"\r\n");
                                                        bf.close();
                                        }
                                        catch (IOException ioe)
                                        {
                                                throw new RuntimeException("failure");
                                        }
                                }
                        });
                        save.addActionListener(new ActionListener ()
                        {
                                public void actionPerformed (ActionEvent e)
                                {
                                       
                                        if(file==null)
                                        {
                                          fdsave.setVisible(true);
                                         
                                          String dirPath=fdsave.getDirectory();
                                          String fileName=fdsave.getFile();
                                           if(fileName==null||dirPath==null)
                                                   return;
                                          file=new File(dirPath,fileName);
                                        }
                                       
                               
                                        try
                                        {
                                                BufferedWriter bw=new BufferedWriter(new FileWriter(file));
                                                String text=ta.getText();
                                                bw.write(text);
                                                bw.flush();
                                                bw.close();
                                        }
                                        catch (IOException ioe)
                                        {
                                                throw new RuntimeException("failure");
                                        }
               
                                }
                        });
                       
        }

}
class myMenuDemo
{
        public static void main(String[] args)
        {
                new menuDemo();
        }
}

作者: 刘蕴学    时间: 2012-3-25 14:11
经测试,一切正常
作者: 阿牛    时间: 2012-3-25 18:29
了无尘 发表于 2012-3-25 14:11
经测试,一切正常

打开已经存在的文件,修改,再保存的话,还是会弹出保存对话框的,但,应该是不弹出的才对,只有新文档保存时才弹出。




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