/*
練習:打開,保存文件
*/
import java.io.*;
import java.awt.*;
import java.awt.event.*;
class MyMenu {
private Frame frame;
private MenuBar menuBar;
private Menu fileMenu;
private MenuItem openItem, saveItem, closeItem;
private FileDialog openDialog, saveDialog; //對話框
private TextArea textArea;
private File file;
MyMenu() {
init();
}
public void init() {
//設置窗體
frame = new Frame("my frame");
frame.setBounds(300, 100, 600, 500);
//frame.setLayout(new FlowLayout());
menuBar = new MenuBar();
fileMenu = new Menu("文件");
openItem = new MenuItem("打開");
saveItem = new MenuItem("保存");
closeItem = new MenuItem("退出");
textArea = new TextArea();
//往窗體添加組件
frame.setMenuBar(menuBar);
frame.add(textArea);
menuBar.add(fileMenu);
fileMenu.add(openItem);
fileMenu.add(saveItem);
fileMenu.add(closeItem);
//設置文件對話框
openDialog = new FileDialog(frame, "打開文件", FileDialog.LOAD);
saveDialog = new FileDialog(frame, "保存文件", FileDialog.SAVE);
myEvent();
frame.setVisible(true);
}
private void myEvent() {
openItem.addActionListener(new ActionListener() { //打開
public void actionPerformed(ActionEvent e) {
openDialog.setVisible(true);
String dirPath = openDialog.getDirectory();
String fileName = openDialog.getFile();
//System.out.println(dirPath + " " + fileName);
if(dirPath == null || fileName == null)
return;
textArea.setText("");
file = new File(dirPath, fileName);
BufferedReader bufr = null;
try {
bufr = new BufferedReader(new FileReader(file));
String str = null;
while((str = bufr.readLine()) != null)
textArea.append(str + "\r\n");
} catch(IOException ie) {
ie.printStackTrace();
} finally {
try {
if(bufr != null)
bufr.close();
} catch(IOException ie) {
ie.printStackTrace();
}
}
}
});
saveItem.addActionListener(new ActionListener() { //保存
public void actionPerformed(ActionEvent e) {
if(file == null) {
saveDialog.setVisible(true);
String dirPath = saveDialog.getDirectory();
String fileName = saveDialog.getFile();
if(dirPath == null || fileName == null)
return;
file = new File(dirPath, fileName);
}
BufferedWriter bufw = null;
try {
bufw = new BufferedWriter(new FileWriter(file));
String info = textArea.getText();
bufw.write(info);
} catch(IOException ie) {
ie.printStackTrace();
} finally {
try {
if(bufw != null)
bufw.close();
} catch(IOException ie) {
ie.printStackTrace();
}
}
}
});
closeItem.addActionListener(new ActionListener() { //退出
public void actionPerformed(ActionEvent e) {
System.exit(1);
}
});
frame.addWindowListener(new WindowAdapter() { //關閉窗體
public void windowClosing(WindowEvent e) {
System.exit(1);
}
});
}
}
public class OpenAndSaveFile {
public static void main(String[] args) {
new MyMenu();
}
}