GUI-打开文件

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

class  MyMenuTest
{
    private Frame f;//窗口
    private MenuBar bar;//菜单栏
    private TextArea ta;//文本区域
    private Menu fileMenu,subMenu;//菜单
    private MenuItem openItem,saveItem,closeItem,subItem;//菜单项

    private FileDialog openDia,savDia//文件对话框,有打开,关闭 2种模式

    MyMenuDemo()
    {
        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("文件");//菜单 名称
        subMenu = new Menu("子菜单");

        subItem = new MenuItem("子条目");//菜单项目 名称

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

        subMenu.add(subItem);//subMenu添加subItem子条目 菜单项目

        fileMenu.add(subMenu);//菜单里面添加submenu子菜单
        fileMenu.add(subItem);//菜单里面 包含 菜单项目
        fileMenu.add(closeItem);//菜单里面 包含 菜单项目
        bar.add(fileMenu);//菜单栏里面添加 菜单

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

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

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

    private void myEvent()//对窗口的事件处理方法
    {

        openItem.addActionListener(newActionListener()//菜单项目“openItem 打开” 设置功能
        {
            public void actionPerfomed(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 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(newActionListener()//菜单项目 设置退出功能
        {
            public void actionPerfomed(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 MyMenuDemo();
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值