创建一个简单的纯文本文件显示工具,它能在一个具有滚动条的窗口里面查看文本文件。该程序应当扩展Frame类,并含有一个文件菜单系统。通过菜单可以打开文件和退出程序,当选择“打开”命令时应当弹出一个标准的“打开文件”对话框,以便用户选择要打开的文本文件,选择“退出”命令将关闭程序。
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class 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(true);
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();
}
}