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

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


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();
}
}
});
}





}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值