黑马程序员技术交流社区
标题:
视频里的简易文本文档代码问题
[打印本页]
作者:
何超
时间:
2013-11-18 21:04
标题:
视频里的简易文本文档代码问题
本帖最后由 何超 于 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的指向问题,但是具体在哪里不知道!!!
作者:
FFF
时间:
2013-11-19 00:13
如果问题已经解决,请及时修改主题为“提问结束”。
修改主题的方法链接
http://bbs.itheima.com/thread-89313-1-1.html
如果没有解决,可能你的问题问得不够清楚。可以重新发问的哦~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2