黑马程序员技术交流社区
标题:
GUI中读取文件,但是文本框中内容不能覆盖
[打印本页]
作者:
DD_vincent
时间:
2015-8-27 19:10
标题:
GUI中读取文件,但是文本框中内容不能覆盖
本帖最后由 DD_vincent 于 2015-8-27 19:24 编辑
下午在看老毕的GUI,试着做了一个记事本,给打开菜单添加ActionListener时,设置了每次打开新文件会将文本框中内容先清空。
但是实际使用时,如果是打开.java文件,那么会自动清空。
但是当打开的是.txt文件时,每两次才会将内容清空。也就是说,第二次打开.txt文件,内容会在加载第一个文件的内容后面,第三次才会将之前的内容都清空。
再次测试的时候发现好像是跟文本内容有关。即使是.txt文件,如果文本内容中没有回车,只有一行数据,那么就无法清空。如果文本内容有多行的话,就可以清空。这时为什么?
代码已经对着老毕的视频看了好几遍了,没有发现什么错误。
代码如下,嫌多的可以只看注释“load菜单的监听器”内容的代码:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
class MenuDemo
{
private Frame f;
private MenuBar mb;
private Menu file;
private MenuItem loadFile;
private MenuItem saveFile;
private MenuItem closeItem;
private TextArea ta;
MenuDemo()
{
ini();
}
private void ini()
{
//初始化窗体
f = new Frame("MenuDemo");
f.setBounds(500,200,500,800);
//初始化菜单栏
mb = new MenuBar();
file = new Menu("File");
loadFile = new MenuItem("Load File");
saveFile = new MenuItem("Svae File");
closeItem = new MenuItem("close program");
//初始化文本框
ta = new TextArea();
f.setMenuBar(mb);
mb.add(file);
file.add(loadFile);
file.add(saveFile);
file.add(closeItem);
f.add(ta);
Action();
f.setVisible(true);
}
private void Action()
{
//添加窗体的关闭监听器
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
//添加退出按钮的监听器
closeItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
//定义点击load菜单的监听器
loadFile.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
FileDialog fd = new FileDialog(f,"open",FileDialog.LOAD);
fd.setVisible(true);
String fileName = fd.getFile();
String dirPath = fd.getDirectory();
if(dirPath == null || fileName == null)
return;
ta.setText("");
File f = new File(dirPath, fileName);
BufferedReader br = null;
// 点击load菜单后,将指定文件在文本框中显示
try
{
br = new BufferedReader(new FileReader(f));
String line = null;
while((line=br.readLine())!=null)
{
ta.append(line+"\r\n");
}
br.close();
}
catch(IOException io)
{
io.printStackTrace();
}
}
});
//定义点击save菜单的监听器
saveFile.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
FileDialog fd = new FileDialog(f,"save",FileDialog.SAVE);
fd.setVisible(true);
}
});
}
public static void main(String[] args)
{
new MenuDemo();
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2