9 Swing菜单

Swing菜单是我们经常用到的一种控件,NetBeans对菜单进行了很好的封装,是我们应用起来非常方便。下面,我们就来简单的了解一下Swing菜单。

菜单:Jmenu

菜单项:JmenuItem

复选菜单项:JcheckBocMenuItem

单选菜单项:JradioButtonMenuItem

弹出式菜单:JpopupMenu

 

下面来看一个简单的菜单程序:

代码:

import java.awt.*;

import javax.swing.*;

public class DemoSimpleMenu extends JFrame{

    JMenuBar jMenuBarOne;

    JMenu fileMenu,editMenu,newFileMenu;

    JMenuItem openFile,closeFile;

    JCheckBoxMenuItem newFileTxt,newFileJava;

    JRadioButtonMenuItem copyFile,pasteFile;

    ButtonGroup buttonEdit;

   

    /** Creates a new instance of DemoSimpleMenu */

    public DemoSimpleMenu() {

        jMenuBarOne=new JMenuBar();

        buttonEdit=new ButtonGroup();

        fileMenu=new JMenu("文件");

        editMenu=new JMenu("编辑");

        newFileMenu=new JMenu("新建文件");

        openFile=new JMenuItem("打开文件");

        closeFile=new JMenuItem("关闭文件");

        newFileTxt=new JCheckBoxMenuItem("文本文件");

        newFileJava=new JCheckBoxMenuItem("Java文件");

        copyFile=new JRadioButtonMenuItem("复制");

        pasteFile=new JRadioButtonMenuItem("粘贴");

        buttonEdit.add(copyFile);

        buttonEdit.add(pasteFile);

        this.setJMenuBar(jMenuBarOne);

        jMenuBarOne.add(fileMenu);

        jMenuBarOne.add(editMenu);

        fileMenu.add(openFile);

        fileMenu.add(closeFile);

        fileMenu.addSeparator();

        fileMenu.add(newFileMenu);

        newFileMenu.add(newFileTxt);

        newFileMenu.add(newFileJava);

        editMenu.add(copyFile);

        editMenu.add(pasteFile);

        this.setTitle("菜单的简单使用");

        this.setBounds(100,100,250,150);

        this.setVisible(true);

        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }

    public static void main(String[] args) {

        new DemoSimpleMenu();

    }

}

好的,现在大家已经能够明白菜单的层次结构了,那么,我们下面再看一个例子。关于菜单的各种方法,在此不作多说,在相关的帮助文档上,都可以很清楚的查到。

NetBeans中使用菜单控件

在添加菜单栏,然后添加菜单,然后在导航窗口右击菜单,添加,选择要添加的菜单项,或者子菜单。

然后在相应的菜单项上右击,可以选择事件,添加如下代码:

JFileChooser fileChooser=new JFileChooser();

        fileChooser.showOpenDialog(this);//打开文件菜单项

 

JFileChooser fileChooser=new JFileChooser();

        fileChooser.showSaveDialog(this);//保存文件菜单项

这样,我们就基本上掌握了菜单控件的开发方法,下面,我们要来讲解一个关于弹出式菜单的例子:

代码:

public class DemoJPopupMenu extends JFrame{

    JMenu fileMenu;

    JPopupMenu jPopupMenuOne;

    JMenuItem openFile,closeFile,exit;

    JRadioButtonMenuItem copyFile,pasteFile;

    ButtonGroup buttonGroupOne;

    /** Creates a new instance of DemoJPopupMenu */

    public DemoJPopupMenu() {

    jPopupMenuOne=new JPopupMenu();

    buttonGroupOne=new ButtonGroup();

    fileMenu=new JMenu("文件");

    openFile=new JMenuItem("打开");

    closeFile=new JMenuItem("关闭");

    fileMenu.add(openFile);

    fileMenu.add(closeFile);

    jPopupMenuOne.add(fileMenu);

    jPopupMenuOne.addSeparator();

    copyFile=new JRadioButtonMenuItem("复制");

    pasteFile=new JRadioButtonMenuItem("粘贴");

    buttonGroupOne.add(copyFile);

    buttonGroupOne.add(pasteFile);

    jPopupMenuOne.add(copyFile);

    jPopupMenuOne.add(pasteFile);

    jPopupMenuOne.addSeparator();

    exit=new JMenuItem("退出");

    jPopupMenuOne.add(exit);

    MouseListener popupListener=new PopupListener(jPopupMenuOne);

    this.addMouseListener(popupListener);

    this.setTitle("弹出式菜单的简单使用");

    this.setBounds(100,100,250,150);

    this.setVisible(true);

    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }

    public static void main(String[] args) {

        new DemoJPopupMenu();

    }

    class PopupListener extends MouseAdapter{

        JPopupMenu popupMenu;

        PopupListener(JPopupMenu popupMenu){

            this.popupMenu=popupMenu;

        }

        public void mousePressed(MouseEvent e){

            showPopupMenu(e);

        }

        public void mouseReleased(MouseEvent e){

            showPopupMenu(e);

        }

        private void showPopupMenu(MouseEvent e){

            if(e.isPopupTrigger()){

                popupMenu.show(e.getComponent(),e.getX(),e.getY());

            }

        }

    }

}