GUI-保存文件

//GUI-打开文件
import java.awt.*;
import java.awt.event.*;
import java.io.*;//file

public class  MyMenuTest
{
    private Frame f;//窗口
    private MenuBar bar;//菜单栏
    private TextArea ta;//文本区域
    private Menu fileMenu;//菜单
    private MenuItem openItem,saveItem,closeItem;//菜单项
    private FileDialog openDia,saveDia;//文件对话框,有打开,关闭 2种模式
    private File file;//声明文件为成员 

    MyMenuTest()
    {
        init();
    }

    public void init()
    {
        f = new Frame("my window"); //窗口框架初始化 标题
        f.setBounds(300,100,650,600);//窗口框架 边界
        //f.setLayout(new FlowLayout());//窗口框架 流式布局,不设置就默认是边界全填充布局
        bar = new MenuBar();
        ta = new TextArea();

        fileMenu = new Menu("文件");//菜单 名称

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

        f.setMenuBar(bar);//窗口框架 添加菜单栏要通过setMenuBar()方法,参数里面放MenuBar名称
        bar.add(fileMenu);//菜单栏里面添加 菜单

        fileMenu.add(openItem);//菜单filemenu里面添加submenu子菜单
        fileMenu.add(saveItem);//菜单里面 包含 菜单项目
        fileMenu.add(closeItem);//菜单里面 包含 菜单项目


        openDia = new FileDialog(f,"我要打开",FileDialog.LOAD);//文件对话框,有打开,保存 2种模式 (frame f窗口框架,stirng s标题,mode模式)
        saveDia = new FileDialog(f,"我要保存",FileDialog.SAVE);//文件对话框,有打开,保存 2种模式 (frame f,stirng s,mode)
        saveDia = new FileDialog(f,"我要保存",FileDialog.SAVE);

        f.add(ta);//添加文本区域
        myEvent();//直接调用myEvent() 事件处理方法
        f.setVisible(true);//设置窗口可见
    }

    private void myEvent()//对窗口的事件处理方法
    {
        saveItem.addActionListener(new ActionListener()//菜单项目“saveItem 保存” 功能
        {
            public void actionPerformed(ActionEvent e)//设置动作播放
            {
                if (file == null)//如果 文件不存在 才会出现保存对话框
                {
                    saveDia.setVisible(true);//显示 文件对话框saveDia
                    String dirPath = saveDia.getDirectory();//String getDirectory() 获取此文件对话框的目录。 
                    String fileName = saveDia.getFile();// String getFile() 获取此文件对话框的选定文件。
                    if (dirPath==null||fileName==null)//为了防止点"取消"出现异常
                        return;//防止异常出现 返回语句                    
                    file = new File(dirPath,fileName);//封装成File对象 把目录名和文件名,这里表示要存的文件
                }
                try//异常处理,必然执行语句
                {
                    BufferedWriter bufw = new BufferedWriter(new FileWriter(file));
                    String text = ta.getText();//getText()获取文本
                    bufw.write(text);//写入文本
                    //bufw.flush();//刷新
                    bufw.close();//关闭
                }
                catch (IOException ex)//捕获
                {
                    throw new RuntimeException();//抛出
                }
            }
        });


        openItem.addActionListener(new ActionListener()//菜单项目“openItem 打开” 功能
        {
            public void actionPerformed(ActionEvent e)//设置动作播放
            {
                openDia.setVisible(true);//显示 文件对话框openDia
                String dirPath = openDia.getDirectory();//String getDirectory() 获取此文件对话框的目录。 
                String fileName = openDia.getFile();// String getFile() 获取此文件对话框的选定文件。
                //System.out.println(dirPath+"..."+fileName);//控制台打印
                if (dirPath==null||fileName==null)
                    return;//防止异常出现 

                ta.setText("");//清空文本区域
                file = new File(dirPath,fileName);//封装成File对象 把目录名和文件名

                try
                {//这里写读取文本文件的过程
                    BufferedReader bufr = new BufferReader(new FileReader(file));//缓冲区字符读取流
                    String line = null;
                    while ((line = bufr.readLine())!=null)//循环读取行
                    {
                        ta.append(line+"\r\n");//末尾添加到ta文本区域
                    }
                    bufr.close();//关闭流
                }
                catch (IOException ie)
                {
                    throw new RuntimeException("读取失败");
                }
            }
        });

        closeItem.addActionListener(new ActionListener()//菜单项目 设置退出功能
        {
            public void actionPerformed(ActionEvent e)
                {
                    System.exit(0);             
                }
        });

        f.addWindowListener(new WindowAdapter()//Frame的关闭按钮的退出功能
        {
            public void windowClosing(WindowEvent e)//窗口关闭按钮 设置退出功能
            {
                System.exit(0);
            }
        });
    }

    public static void main(String[] args) 
    {
        new MyMenuTest();
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值