您的位置:首页 > 产品设计 > UI/UE

黑马程序员-----GUI中保存文件和打开文件

2014-10-21 17:40 197 查看
             ------Java培训、Android训、iOS培训、Net培训、期待与您交流!------

 
           

一、问题描述

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

二、思路

 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;
p
ea92
rivate 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

                

 
            ------Java培训、Android训、iOS培训、Net培训、期待与您交流!------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息