要求:
提供文件打开,保存及另存为三个功能按钮,并能将打开的文件显示再文本区域中,用户可以编辑文件内容
import java.awt.Button;
import java.awt.Color;
import java.awt.FileDialog;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.TextEvent;
import java.awt.event.TextListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.channels.NonWritableChannelException;
public class FileEditor extends WindowAdapter implements ActionListener, TextListener {
Frame f;
TextArea ta1;
Panel p1;
TextField tf1;
Button b1, b2, b3;
FileDialog fd;
File file1 = null;
public static void main(String[] args) {
(new FileEditor()).display();
}
public void display() {
f = new Frame("简易文本编辑器");
f.setSize(680, 400);
f.setLocation(200, 140);
f.setBackground(Color.blue);
f.addWindowListener(this);
tf1 = new TextField();
tf1.setEnabled(false);
tf1.setFont(new Font("Dialog", 0, 20));
f.add(tf1, "North");
ta1 = new TextArea();
ta1.setFont(new Font("Dialog", 0, 20));
f.add(ta1);
ta1.addTextListener(this);
p1 = new Panel();
p1.setLayout(new FlowLayout(FlowLayout.LEFT));
b1 = new Button("打开");
b2 = new Button("保存");
b3 = new Button("另存为");
p1.add(b1);
p1.add(b2);
p1.add(b3);
b2.setEnabled(false);
b3.setEnabled(false);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
f.add(p1, "South");
f.setVisible(true);
}// display结束
// 文本编辑
@Override
public void textValueChanged(TextEvent e) {
b2.setEnabled(true); // 按钮启用状态
b3.setEnabled(true);
}
// 文件打开
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == b1) {
fd = new FileDialog(f, "Open", FileDialog.LOAD);
fd.setVisible(true);
if ((fd.getDirectory() != null) && (fd.getFile() != null)) {
tf1.setText(fd.getDirectory() + fd.getFile());
try {
file1 = new File(fd.getDirectory(), fd.getFile());
FileReader fr = new FileReader(file1);
BufferedReader br = new BufferedReader(fr);
String aline;
while ((aline = br.readLine()) != null) {
ta1.append(aline + "/r/n");// 其中/r/n表示回车换行
fr.close();
br.close();
} // try结束
} catch (IOException ioe) {
System.out.println(ioe);
}
} // 内层if结束
} // 外层if结束
if ((e.getSource() == b2) || (e.getSource() == b3)) {
if ((e.getSource() == b3) || (e.getSource() == b2) && (file1 == null)) {
fd = new FileDialog(f, "Save", FileDialog.SAVE);
if (file1 == null)
fd.setFile("Edit1.txt"); //默认文件名
else
fd.setFile(file1.getName());
fd.setVisible(true);
if ((fd.getDirectory() != null) && (fd.getFile() != null)) {
tf1.setText(fd.getDirectory() + fd.getFile());
file1 = new File(fd.getDirectory(), fd.getFile());
save(file1);
}
} else
save(file1);
}
}
// 文件保存
public void save(File file1) {
try {
FileWriter fw = new FileWriter(file1);
fw.write(ta1.getText());
fw.close();
b2.setEnabled(false); // 按钮禁用状态
b3.setEnabled(false);
} catch (IOException ioe) {
System.out.println(ioe);
}
}// 方法save结束
// 窗口关闭
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}// 主类结束