• 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();

        }

    }

  • 相关阅读:
    美国贷款买饭的房屋保险
    ArrayList和数组间的相互转换
    JList动态添加元素
    美国交往礼仪
    刘元普双生贵子(但行好事,莫问前程)
    CountDownLatch与CyclicBarrier
    彻底理解Java的feature模式
    Java中的Future模式原理自定义实现
    浅谈Java Future接口
    Future接口和Callable接口以及FeatureTask详解
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11137627.html
Copyright © 2020-2023  润新知