A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhoubinjian 金牌黑马   /  2016-4-30 03:07  /  338 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 zhoubinjian 于 2016-4-30 03:10 编辑

/*
需求:点击菜单栏的打开(load),弹出对话框,选择文本,编写内容然后再保存,当没有此文件时,新建一个,有的话就保存覆盖原内容
*/

package myMenu;
import java.io.*;
import java.awt.*;
import java.awt.event.*;

public class Demo
{
        private Frame f;//显示窗口
        
        private TextArea ta;//文本框
        private FileDialog load;
        private FileDialog save;

        //菜单
        private MenuBar mb;//菜单栏
        private Menu m;//菜单(是属于菜单栏中的)
        private MenuItem closeItem,item,item1;//菜单项(是属于菜单 中的)
        private File file;


        Demo()
        {
                init();
        }
        public void init()
        {
                f=new Frame("my window");
                f.setBounds(600,400,800,600);
                //f.setLayout(new FlowLayout());//不设置布局,默认边界布局
               
               
                ta=new TextArea();
                //初始化菜单
                mb=new MenuBar();
                m=new Menu("文件");
               
                closeItem=new MenuItem("退出");
                item=new MenuItem("打开");
                item1= new MenuItem("保存");

                load=new FileDialog(f,"我要打开",FileDialog.LOAD);
                save=new FileDialog(f,"我要保存",FileDialog.SAVE);
               
               
                f.add(ta);
                //添加菜单
                f.setMenuBar(mb);//在显示窗口中添加菜单栏是通过setMenuBar()方法
                mb.add(m);
                m.add(item);
               
                m.add(item1);
                m.add(closeItem);
               

               
                myEvent();//调用事件监听

                f.setVisible(true);//窗口默认是隐藏的,需要调用此函数才能显示窗口
        }

        public void myEvent()//事件监听函数
        {
               
               
                f.addWindowListener(new WindowAdapter()
                        {
                                public void windowClosing(WindowEvent e)
                                {
                                        System.exit(0);//退出程序
                                }
                        });        
                item.addActionListener(new ActionListener()
                        {
                                public void actionPerformed(ActionEvent e)
                                {
                                        load.setVisible(true);
                                        String getPath=load.getDirectory();
                                        String getName=load.getFile();
                                        if(getPath==null || getName==null)
                                                return ;
                                        ta.setText("");//获取到目录和文件名就清空文本框 的内容
                                        file=new File(getPath,getName);
                                        try
                                        {
                                                BufferedReader bufr=new BufferedReader(new FileReader(file));
                                                String line=null;
                                                while((line=bufr.readLine())!=null)
                                                {
                                                        ta.append(line+"\r\n");//append()方法,当添加内容时,会在原有内容的末尾加入
                                                }
                                                bufr.close();
                                        }
                                        catch (IOException ex)
                                        {
                                                throw new RuntimeException();
                                        }
                                       
                                }
                        });
                item1.addActionListener(new ActionListener()
                        {
                                public void actionPerformed(ActionEvent e)
                                {
                                        if(file==null)//如果文件不存在,就新建一个,如果存在,则直接用缓冲区读取
                                        {
                                        save.setVisible(true);
                                        String getPath=save.getDirectory();//获取目录
                                        String getName=save.getFile();//获取文件名
                                        if(getPath==null || getName==null)//没有选择文件时,不做任何处理
                                                return ;
                                       
                                        file=new File(getPath,getName);//将目录,文件名封装成对象
                                        }
                                        try
                                        {
                                                BufferedWriter bufr=new BufferedWriter(new FileWriter(file));//读取文件(目录+文件名)
                                                String text=ta.getText();//将文本框的内容获取到
                                                bufr.write(text);//将获取到的文件内容写入到文件并覆盖
                                                bufr.close();
                                        }
                                        catch (IOException ex)
                                        {
                                                throw new RuntimeException();
                                        }
                                       
                                }
                        });
                closeItem.addActionListener(new ActionListener()//动作监听,按下菜单中的  退出键  退出程序
                        {
                                public void actionPerformed(ActionEvent e)
                                {
                                       
                                        System.exit(0);
                                }
                        });
        }

        public static void main(String[] args)
                {
                        
                        new Demo();
                }

}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马