编写一个简单的文本文件浏览工具,不允许用户修改文件。可以使用readFile( )方法每次从文件中读取一行文本,然后添加到TextArea中。当所有的文本都读到TextArea中以后,要把光标放到TextArea的头部。在actionPerformed( )方法中,当用户选择打开文件时,创建一个模式为LOAD的标准FileDialog对话框,根据该对话框中选定的文件,通过getFile( )和getDirectory( )方法构造一个完整的文件名,最后在该文件存在的情况下,用readFile( )读取文件中的文本。程序的完整代码如下。
/** TextViewer.java @author ZDS
* 2007-2-19 下午22:38:15 */
packagechap11;
importjava.awt.*;
importjava.awt.event.*;
importjava.io.*;
/** 简单文本浏览工具*/
publicclass TextViewer extends Frame implements ActionListener {
private Menu fileMenu = new Menu("File");
private MenuItem fileOpen = new MenuItem("Open");
private MenuItem fileExit = new MenuItem("Exit");
private TextArea text = new TextArea();
public TextViewer() {
super("Text Viewer");
fileMenu.add(fileOpen);
fileOpen.addActionListener(this);
fileMenu.addSeparator();
fileMenu.add(fileExit);
fileExit.addActionListener(this);
MenuBar menu = new MenuBar();
menu.add(fileMenu);
setMenuBar(menu);
setLayout(new BorderLayout());
add("Center", text);
text.setEditable(false);
setSize(400, 400);
setVisible(true);
}
public void readFile(String file) {
text.setText("");
try {
BufferedReader in = new BufferedReader(new FileReader(file));
String line;
while ((line = in.readLine()) != null)
text.append(line + "\n");
in.close();
text.setCaretPosition(0);
} catch (IOException ioe) {
System.err.println(ioe);
}
}
public void actionPerformed(ActionEvent ae) {
if (ae.getSource() == fileExit)
System.exit(0);
else if (ae.getSource() == fileOpen) {
FileDialog fd = new FileDialog(this, "Open File", FileDialog.
LOAD);
fd.setVisible(true);
if (fd.getFile() != null) {
File file = new File(fd.getDirectory() + fd.getFile());
if (file.exists())
readFile(file.toString());
else
text.setText("File name: " + file + " invalid.");
}
fd.dispose();
}
}
public static void main(String args[]) {
TextViewer editor = new TextViewer();
editor.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}