本帖最后由 陈中岩 于 2013-4-26 22:24 编辑
我先描述一下问题.我是一步一步跟着毕老师的视频做的.但是我的保存之后,保存的对话框并没有关闭.请问是什么原因,
第二个问题:我的文件已经有了,但是再进行保存的时候,仍然进行弹窗.
代码如下:- package test11;
- //练习-打开文件
- import java.awt.*;
- import java.awt.event.*;
- import java.io.*;
- class MyMenuTest {
- private Frame f;
- private MenuBar bar;//菜单栏
- private Menu fileMenu;//菜单
- private MenuItem openItem,saveItem,closeItem;//子菜单
- private FileDialog openDia,saveDia;//打开,保存
- private TextArea ta;//文本区域
- private File file;
-
- MyMenuTest()
- {
- init();
- }
- public void init()
- {
- f = new Frame();
- f.setBounds(100,100,500,600);
- //f.setLayout(new FlowLayout());
-
- bar = new MenuBar();
- fileMenu = new Menu("文件");
- closeItem = new MenuItem("退出");
- openItem = new MenuItem("打开");
- saveItem = new MenuItem("保存");
- ta = new TextArea();
-
- f.setMenuBar(bar);//添加菜单
- bar.add(fileMenu);//添加"文件"
- fileMenu.add(openItem);
- fileMenu.add(saveItem);
- fileMenu.add(closeItem);
- f.add(ta);//文本区域
-
-
- openDia = new FileDialog(f,"我要打开",FileDialog.LOAD);
- saveDia = new FileDialog(f,"我要保存",FileDialog.SAVE);
-
- myEvent();
- f.setVisible(true);
- }
- public void myEvent()
- {
- //保存的事件
- saveItem.addActionListener(new ActionListener()
- {
- public void actionPerformed(ActionEvent e)
- {
- //弹与不弹就看文件存不存在..
- if(file==null)
- { //弹出
- saveDia.setVisible(true);
-
- String dirPath = saveDia.getDirectory();//路径
- String fileName = saveDia.getFile();//名字
- if(dirPath==null || fileName==null)//如果有一个为空的话,那么就返回
- return ;
- file = new File(dirPath+fileName);
- }
- try
- {
- BufferedWriter bufw = new BufferedWriter(new FileWriter(file));
-
- String text = ta.getText();
- bufw.write(text);
- bufw.close();
- }
- catch(IOException ex)
- {
- throw new RuntimeException();
- }
- }
- });
-
-
-
- //打开的事件
- openItem.addActionListener(new ActionListener()
- {
- public void actionPerformed(ActionEvent e)
- {
- openDia.setVisible(true);//显示
- String dirPath = openDia.getDirectory();//路径
- String fileName = openDia.getFile();//名字
- System.out.println(dirPath+fileName);
- if(dirPath==null || fileName==null)//如果有一个为空的话,那么就返回
- return ;
- ta.setText("");//添加下个文件之前先清空文本区域
- file = new File(dirPath+fileName);
- try
- {
- BufferedReader bufr = new BufferedReader(new FileReader(file));
- String line = null;
- while((line=bufr.readLine())!=null)
- {
- ta.append(line+"\r\n");
- }
- bufr.close();
- }
- catch(IOException es)
- {
- throw new RuntimeException("读取失败");
- }
- }
- });
-
- saveItem.addActionListener(new ActionListener()
- {
- public void actionPerformed(ActionEvent e)
- {
- saveDia.setVisible(true);
- }
- });
-
-
- //f的窗口事件
- f.addWindowListener(new WindowAdapter()
- {
- public void windowClosing(WindowEvent e)
- {
- System.exit(0);
- }
- });
- closeItem.addActionListener(new ActionListener()
- {
- public void actionPerformed(ActionEvent e)
- {
- System.exit(0);
- }
- });
- }
- public static void main(String[] args)
- {
- new MyMenuTest();
- }
- }
复制代码 |