GUI中保存文件和打开文件

   一、问题描述

  创建一个简单的记事本,包括打开,保存,退出菜单并能实现其操作。

二、思路


 1、创建Frame窗体,对窗体进行基本设置 比如:大小,位置,布局

         (1)创建Frame窗体:Frame f = new Frame("my window");

         (2)对窗体设置大小:f.setBounds(x, y, width, height);

         (3)设置窗体布局:f.setLayout(new FlowLayout());

 2、先建立菜单栏,再建立“文件”菜单添加到菜单栏,并建立“打开”,”保存“,“退出”菜单项添加到菜单;

           (1)创建菜单栏 MenuBar  mb = new MenuBar();
           (2)创建菜单Menum = new Menu("文件");

           (3)创建菜单项 
                MenuItem  saveItem = new MenuItem("保存");
MenuItemopenItem = new MenuItem("打开");
MenuItemcloseItem = new MenuItem("退出");
           (4)将菜单项添加到菜单
               m.add(openItem);
               m.add(saveItem);
               m.add(closeItem);
           (5)将菜单添加到菜单栏

                mb.add(m);
           (6)将菜单栏添加到窗体
               f.setMenuBar(mb);

 3、设置动作监听事件,保存,打开,退出。

 4、让窗体显示,通过setVisible(true)

三、具体代码实现

import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class MyMenuTest 

{
private Frame f;
private TextArea ta;
private MenuBar mb;
private Menu m;
private MenuItem closeItem, saveItem, openItem;
private FileDialog openDia, saveDia;
private File file;


MyMenuTest() 

        {
init();
}
public void init() 

{f = new Frame("my window"); // 建立一个窗口
f.setBounds(300, 100, 500, 600);// 设大小位置

mb = new MenuBar();//创建菜单栏
ta = new TextArea();//创建文本区域
m = new Menu("文件");//创建菜单


saveItem = new MenuItem("保存");//创建保存菜单项
openItem = new MenuItem("打开");//创建打开菜单项
closeItem = new MenuItem("退出");//创建退出菜单项

//将保存、打开、退出菜单项添加到菜单中
m.add(openItem);
m.add(saveItem);
m.add(closeItem);

mb.add(m);将菜单项添加到菜单栏

f.setMenuBar(mb);//将菜单栏添加到窗体
f.add(ta);//将文本区域添加到窗体

openDia = new FileDialog(f, "我要打开", FileDialog.LOAD);// 此常量值指示文件对话框窗口的作用是查找要读取的文件。
saveDia = new FileDialog(f, "我要打开", FileDialog.SAVE);//这里必须是文件对话框, 因为Dialog中没有获取目录和文件的方法,此常量值指示文件对话框窗口的作用是查找要写入的文件。
myEvent();//监听事件
f.setVisible(true);//设置窗体可见
}


private void myEvent()//封装所有窗体

 {//保存事件监听 

saveItem.addActionListener(new ActionListener() {

   public void actionPerformed(ActionEvent e) 

{  if (file == null)  //判断文件是否存在

 {saveDia.setVisible(true);//设置保存对话框可见
  String dirPath = saveDia.getDirectory();//定义文件路径
  String filename = saveDia.getFile();//定义文件名
  if (dirPath == null || filename == null) return;//如果路径或者文件名为空,直接返回
  file = new File(dirPath, filename);//创建文件
}

try {

BufferedWriter bufw = new BufferedWriter(new FileWriter(file));//创建带缓冲区的写入流对象
String text = ta.getText();//定义字符串,获取文本内容
bufw.write(text);//将内容写入到缓冲区
bufw.close();//关闭缓冲区

catch (IOException ex) //异常处理

{

throw new RuntimeException();
}}});
openItem.addActionListener(new ActionListener() {//打开事件监听
  public void actionPerformed(ActionEvent e) 

{ openDia.setVisible(true);
  ta.setText("");//清空文本区域的内容
 String dirPath = openDia.getDirectory();
 String filename = openDia.getFile();
 if (dirPath == null || filename == null) return;
 file = new File(dirPath, filename);
 try { 

BufferedReader bufr = new BufferedReader(new FileReader(file)); //创建带缓冲区的读取流对象
String line = null;
while ((line = bufr.readLine()) != null) //循环读取

ta.append(line + "\r\n");//添加到文本区域

bufr.close();//关闭缓冲区

catch (IOException e1) 

throw new RuntimeException("读取失败");
}}});
closeItem.addActionListener(new ActionListener()//退出监听事件

 {public void actionPerformed(ActionEvent e)

 {

System.exit(0);//退出命令。结束程序
}});
f.addWindowListener(new WindowAdapter() //窗体监听事件

 {public void windowClosing(WindowEvent e) 

{System.exit(0);}});
}

public static void main(String[] args)

{
 new MyMenuTest();//创建一个MyMenuTest对象
}
}

四、总结 

 本体涉及内容

  1、GUI中一些基本对象的创建,例如创建Frame窗体,菜单栏,菜单,菜单项,文本区域等对象。

  2、设置对象的一些监听事件,例如窗体监听事件,菜单项中保存,退出,修改一些监听事件。

  3、IO流中缓冲区:为了提高效率使用了BufferedReader、BufferedWriter

               

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Robust28

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值