您的位置:首页 > 编程语言 > Java开发

用图形界面处理文件,简单模拟记事本的文件打开与保存

2015-06-16 09:04 435 查看
/*

 * 用图形界面处理文件,简单模拟记事本。

 */

package awt_mani_file;

import java.awt.*;

import java.awt.event.*;

import java.io.*;

public class AwtFileUse {

public static void main(String[] args) {

new MyNotePad();

}

}

class MyNotePad{

private Frame frame;
//窗体

private MenuBar menubar;
//菜单栏、菜单、打开、保存、关闭菜单项
private Menu filemenu;

private MenuItem open;

private MenuItem save;
private MenuItem close;

private File file;
//用于打开或关闭文件时关联文件

private FileDialog fileopen, filesave;
//打开,保存对话框

private TextArea textarea;
//文本域,用于打开文件

//构造函数
public MyNotePad(){
init();
}

//初始化函数
public void init(){
frame = new Frame("MyNotePad");
//生成窗体

//设置窗体属性
frame.setBounds(350, 50, 650, 600);

menubar = new MenuBar();
//菜单栏,菜单,菜单项
filemenu = new Menu("file");
open = new MenuItem("open");
save = new MenuItem("save");
close = new MenuItem("close");

fileopen = new FileDialog(frame, "fileopen");
//文件对话框
filesave = new FileDialog(frame, "filesave", FileDialog.SAVE);

fileopen.setSize(50, 100);
//设置文件选择对话框属性

textarea = new TextArea();
//文本域,用于打开文件

//将组件添加到窗体
frame.setMenuBar(menubar);
menubar.add(filemenu);
filemenu.add(open);
filemenu.add(save);
filemenu.add(close);

//将文本域添加到窗体,默认是边界布局的center
frame.add(textarea);

myEvent();
//为窗体及其组件添加监听器

frame.setVisible(true);

}

//为窗体及其组建添加监听器
private void myEvent(){

//窗口监听器,用匿名内部类实现
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});

//file-->open为open菜单项添加事件监听器
open.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ace){

fileopen.setVisible(true);
//设置文件选择对话框可见

//获取用户所选取的文件的路径、文件名
String dir = fileopen.getDirectory();
String filename = fileopen.getFile();

//空文件则不执行
if(dir == null || filename == null)
return ;

//建立文件对象,将文件中的内容读入到MyNotePad中的TextArea
file = new File(dir, filename);

//如果文件不存在则程序不执行
if(!file.exists())
return ;

textarea.setText(null);
//文本域的清空

try {
BufferedReader bufr = new BufferedReader(new FileReader(file));

//读取文件
String text = null;
try {
while((text = bufr.readLine()) != null){
textarea.append(text + "\r\n");
}
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("读取文件失败");
e.printStackTrace();
} finally {
try {
if(bufr != null)
bufr.close();
} catch (IOException ioe) {
// TODO Auto-generated catch block
ioe.printStackTrace();
}
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
System.out.println("文件打开失败");
e.printStackTrace();
}

}
});

//file-->save为save菜单项添加事件监听器
save.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent aces){

//如果文件已经存在则可以直接保存,否则打开存储文件对话框选择文件进行保存
if(file == null){
filesave.setVisible(true);

//获取用户所选取的文件的路径、文件名
String dir = filesave.getDirectory();
String filename = filesave.getFile();

System.out.println(dir);
System.out.println(filename);
//空文件则不执行
if(dir == null || filename == null)
return ;
file = new File(dir, filename);
System.out.println(file);
}

//进行文件保存
try {
BufferedWriter bufw = new BufferedWriter(new FileWriter(file));

bufw.write(textarea.getText());
bufw.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("文件保存失败");
e.printStackTrace();
}
}
});
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息