java 菜单

继承体系

MenuBar,Menu,MenuItem之间的关系:

先创建菜单条,再创建菜单,每一个菜单中建立菜单项。

也可以菜单添加到菜单中,作为子菜单。

通过setMenuBar()方法,将菜单添加到Frame中。

 

package june610;

import java.awt.FileDialog;

import java.awt.Frame;

import java.awt.Menu;

import java.awt.MenuBar;

import java.awt.MenuItem;

import java.awt.TextArea;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

//最后导出jar包,用eclipse,必须要指定main函数!!不能直接点击finished!!!

/**

 * 菜单的结构MenuBar(相当于一个环境,f.set、、)

 *  -->Menu(菜单,m.add、、可以添加自己,也可以添加Item)

 *  -->MenuItem(条目 )

 */

class MyMenuDemo{

    private Frame f;//首先声明对象的好处,全局可以调用!

    private MenuBar mb;

    private Menu m,subm;

    private MenuItem mi,close,save,open;

    private FileDialog openDia,saveDia;

    private TextArea ta;

    private File file;

   

    MyMenuDemo(){

        f = new Frame("我的电脑");

        f.setBounds(400, 150, 500, 500);

        //备注:此时没有设置布局管理器类型(因为不设置的话下面的TextArea会很爽!)

        mb = new MenuBar();

        m = new Menu("文件");

        save = new MenuItem("保存");

        open = new MenuItem("打开");

        subm = new Menu("子菜单");

        close = new MenuItem("退出");

        mi = new MenuItem("子菜单2");

        openDia = new FileDialog(f, "我的打开", FileDialog.LOAD);//加载

        saveDia = new FileDialog(f, "我的保存", FileDialog.SAVE);//保存

        ta = new TextArea();

       

        f.setMenuBar(mb);//添加

        mb.add(m);

        subm.add(mi);

        m.add(subm);

        m.add(open);

        m.add(save);

        m.add(close);

        f.add(ta);

       

        f.setVisible(true);

       

       

        init();

    }

   

    public  void init(){

       

        //打开文件,弹出对话框

        open.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent e) {

                openDia.setVisible(true);

                String path = openDia.getDirectory();

                String name = openDia.getFile();

                //ta.append(path+"-----"+name+" ");

                if(path==null || name==null)

                    return ;

                ta.setText("");//每次开始都清空

                file = new File(path, name);

                try {

                    BufferedReader br = new BufferedReader(new FileReader(file));//缓冲流

                    String line = null;

                    while((line = br.readLine()) != null){

                        ta.append(line+" ");

                    }

                    br.close();

                } catch (IOException e1) {

                    e1.printStackTrace();

                }

               

            }

        });

       

        //保存文件,弹出对话框!

        save.addActionListener(new ActionListener() {

           

            public void actionPerformed(ActionEvent e) {

                //注意问题:只有文件第一次保存(不存在)的时候才需要你去弹出对话框,以后只保存,不弹出!

                if(file == null){

                    saveDia.setVisible(true);//不存在才弹,创建文件

                    String path = saveDia.getDirectory();

                    String name = saveDia.getFile();

                   

                    if(name == null || path == null)

                        return;

                   

                    //目录和名字正确,但是文件不存在,就新建一个文件!

                    file = new File(path,name);

                }

               

                try {

                    BufferedWriter bw = new BufferedWriter(new FileWriter(file));

                   

                    String s = ta.getText();

                    bw.write(s);

                    bw.close();

                   

                } catch (IOException e1) {

                    e1.printStackTrace();

                }

            }

        });

       

        f.addWindowListener(new WindowAdapter(){

            public void windowClosing(WindowEvent e){

                System.exit(0);

            }

        });

       

        close.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent e) {

                System.exit(0);

            }

        });

    }

}

public class MenuDemo {

    public static void main(String[] args) {

        new MyMenuDemo();

    }

}

原文地址:https://www.cnblogs.com/fanweisheng/p/11137627.html