本帖最后由 何超 于 2013-11-19 10:21 编辑
- import java.awt.*;
- import java.awt.event.*;
- import java.io.*;
- import java.awt.MenuBar.*;
- class A
- {
- private Frame f;
- private MenuBar bar; //菜单栏
- private Menu fileMenu,subMenu,TryMenu; //菜单
- private MenuItem closeItem,subItem,openItem,saveItem; //菜单项
- private TextArea ta;
- private File file;
-
-
- private FileDialog openDia,saveDia;
- A()
- {
- init();
- }
- public void init()
- {
- f=new Frame("my window");
- f.setBounds(300,100,500,600);
- //f.setLayout(new FlowLayout());去掉布局默认为边界布局,此时可以让布局大小随着TextArea的变化而变化
- ta=new TextArea();
- bar=new MenuBar();
- fileMenu=new Menu("文件");
- subMenu=new Menu("子菜单");
- openItem=new MenuItem("打开");
- saveItem=new MenuItem("保存");
- closeItem=new MenuItem("退出");
- subItem=new MenuItem("子条目");
-
- TryMenu=new Menu("Try");
- fileMenu.add(openItem);
- fileMenu.add(saveItem);
- fileMenu.add(closeItem); bar.add(TryMenu);
- bar.add(fileMenu); //菜单栏添加菜单
- f.setMenuBar(bar);
- f.setVisible(true);
- f.add(ta);
- fileMenu.add(subMenu);//菜单添加菜单
- subMenu.add(subItem);//菜单添加菜单项
- openDia= new FileDialog(f,"我要打开",FileDialog.LOAD);
- saveDia= new FileDialog(f,"我要保存",FileDialog.SAVE);
- myEvent();
- }
- public void myEvent()
- {
- closeItem.addActionListener(new ActionListener()
- {
- public void actionPerformed(ActionEvent e)
- {
- System.exit(0);
- }
- });
- f.addWindowListener(new WindowAdapter()
- {
- public void windowClosing(WindowEvent e)
- {
- System.exit(0);
- }
- });
- openItem.addActionListener(new ActionListener()
- {
- public void actionPerformed(ActionEvent e)
- {
- openDia.setVisible(true);
- String dirPath=openDia.getDirectory();
- String FileName=openDia.getFile();
- if(dirPath==null || FileName==null)
- return ;
- file=new File(dirPath,FileName);
-
- try
- {
- ta.setText("");
- BufferedReader bufr=new BufferedReader(new FileReader(file));
- String line=null;
- while((line=bufr.readLine())!=null)
- {
-
- ta.append(line+"\r\n");
- }
- bufr.close();
- }
- catch(IOException e1)
- {
- throw new RuntimeException("读取文件失败");
- }
- }
- });
- saveItem.addActionListener(new ActionListener()
- {
- public void actionPerformed(ActionEvent e2)
- {
- 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 e3)
- {
- throw new RuntimeException("写入数据失败");
- }
- }
- });
- }
- public static void main(String[] args)
- {
- new A();
- }
- }
复制代码 代码如上 没有错误,这个程序可以打开对应文本,可以保存自定义文本,
但是 对于已存在的文本无法更改。
①
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的指向问题,但是具体在哪里不知道!!!
|
|