java菜单如何点解_解读java菜单

在java中,其菜单的设计与实现,样式众多,机动灵活,自成一体系.下面我们就细说一下,这java菜单的奥密,从中也可以领略Java菜单实现的多样化.    菜单分为三类,一类是固定的,即程序顶上的下拉式菜单,一类是弹出式菜单,另一类则是浮动式菜单.先来看第一类,固定的菜单.欲建立固定菜单,先要建立一JMenuBar对象,它包含了所有的下拉式菜单,建立的方式如:JMenuBar menubar = new JMenuBar();    该JMenuBar可以放在窗体的任何地方,通常我们将它放在窗体的顶部.可以使用如下方法将JMenuBar加入窗体:JFrame.setJMenuBar(menubar);    有了容纳菜单的容器,接下来,就该建立菜单了.与windows菜单设计一样,有多少列菜单就需要有多少个菜单对象,菜单对象的建立方式如:JMenu menuFile = new JMenu("File");建立了一个顶级菜单,就要将它加入到MenuBar中,这就要用到JMenuBar的add方法了:    menubar.add(menuFile);    有了顶级菜单就要下拉菜单项,如果设计下拉菜单项呢?这就有点复杂了.它的实现方法不只一种.下面我们逐个讨论.    1.使用String建立JMenuItem对象.    JMenuItem newItem = new JMenuItem("New");    加入顶级菜单:menuFile.add(newItem);    2.使用Action建立JMenuItem对象.    Action exitAction = new AbstractAction("Exit"){     public void actionPerformed(ActionEvent e){      System.exit(0);     }    });    JMenuItem exitItem = new JMenuItem(exitAction);    menuFile.add(exitAction);    或    JMenuItem exitItem = menuFile.dd(exitAction);    3.不通过建立JMenuItem对象,直接由顶级菜单加入.    JMenuItem openItem = menuFile.add("Open");        在这里再介绍一下顶级菜单的一些其它方法:    menuFile.addSeparator();在下拉菜单间加入分隔线    menuFile.insert(JMenuItem menu,int index);在指定位置插入下拉菜单项    menuFile.insert(Action a,int index);作用同上    menuFile.insertSeparator(int index);在指定位置插入菜单间分隔线    menuFile.remove(int index);删除指定位置的下拉菜单项    menuFile.remove(JMenuItem item);删除指定名称的下拉菜单项    在下拉菜单项中有一个方法可以使下拉菜单项有效或无效,即: JMenuItem.setEnable(boolean state);        现在下拉菜单已经加上了,该是让它们做点什么的时候了.如果你是用Action实现的下拉菜单项,在其actionPerformed方法中已经定义了做 进行的动作.当点击它时就会执行你在其中定义的实体了.但是没有它Action实的该怎么办呢?这里就要引入Java的监听器机制了.以下拉菜单项 Open为例.ActionListener监听器,相信大家一定比较熟悉了吧.那就先建一个类,继承ActionListener,因为它里面只有一个 方法,所以实现它即可.下面这个或许对你有帮助:    class ActionHandler implements ActionListener{     public void actionPerformed(ActionEvent e){      //做你想做的事     }    }    好,建立了监听器,现在我们把监听器与下拉菜单项关联起来.方法仍然是使用add,    openItem.add(new ActionHandler());    这样,当你点击Open菜单项时,就会做你事先定义好的事情了.        如果在下拉菜单中还有下一层下拉菜单,又该如何实现呢?这个说来也简单,它的实现与上面有些类似.首先建立一个JMenu菜单,加入需要的下拉菜单项,最后在顶级菜单中使用add方法将其加入.        在windows程序中,下拉菜单项前大多都有个小图标,这在java中又如何实现呢?    JMenuItem实际是继承自AbstractButton,所以它有点像button.在button中加入图标,大家自然熟知.在菜单中加入也是类似.    JMenuItem openItem = new JMenuItem("Open","open.gif");    在Action中我们也可以如此实现:    Action exitAction = new AbstractAction("Exit","exit.gif"){     public void actionPerformed(ActionEvent e){      System.exit(0);     }    });    如果Action在建立时没有加入图标,仍然可以再加上去,那就是使用如下的方法:    exitAction.putValue(Action.SMALL_ICON,"exit.gif");    java中还有一个有趣的方法,它可以将菜单项中的图标与文字倒个个显示,不妨你也试试:    openItem.setHorizontalTextPosition(SwingConstants.LEFT);这一句就将文字放在了图标的左边, 要重新放回图标的右边,改变一下参数即 可:openItem.setHorizontalTextPosition(SwingConstants.RIGHT);        下面就来说一说,菜单项中的复选框和单选按钮.    建立复选框菜单项,按如下的方法实现即可:    JCheckBoxMenuItem cbItem = new JCheckBoxMenuItem("Save");    或    JCheckBoxMenuItem cbItem = new JCheckBoxMenuItem("Save",true);这样,该项在载入时就是选中状态    建立单选框单项,按如下的方法实现即可:    JRadioButtonMenuItem rbItem = new JRadioButtonMenuItem("Save As");    或    JRadioButtonMenuItem rbItem = new JRadioButtonMenuItem("Save As",true);    与JRaidoButton类似,多个单选按钮菜单项也必须放在ButtonGroup中,才会实现单选.如:    JRadioButtonMenuItem helloItem = new JRadioButtonMenuItem("Hello");    ButtonGroup group = new ButtonGroup();    group.add(rbItem);    group.add(helloItem);    以上两项因都继承于AbstractButton所以,都可以使用方法setSelected(true)和isSelected()来设定和获取当前的选中状态.        菜单的主体工程已经完成了,现在我们再美化一下,加上诸如记忆键和加速键功能.    在建立顶级菜单及下拉菜单项时,可以把记忆键也初始化加入:JMenuItem openItem = new JMenuItem("Open",'O');    在顶级菜单JMenu和下拉菜单项JMenuItem中也都可以使用这样一种方法来增加记忆键:setMnemonic(int c);但如果在下拉菜单项中增加的是Action就不能用此方法了,它有另外一种方法来增加记忆键, 如:ActionItem.putValue(Action.MNEMONIC_KEY,new Integer('x'));    当然还有一个方法可以增加记忆键,这个方法是用指定菜单文字的第几个字母为记忆键,如:    openItem.setDisplayedMnemonicIndex(int c);    菜单文字的索引顺序是从0开始的.    但日常的操作中,我们最常用的还是加速键,在java中,加速键的附加用如下方法:    openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));                接下来,我们该谈一谈另一大类菜单 -- 弹出式菜单了.    它的建立与建立普通菜单有点类似,但可以不需要加标题.    JPopupMenu popup = new JPopupMenu();    这其实就是它的顶级菜单了,有了它,我们才可以得以继续建立后面的菜单项.    JMenuItem cutItem = new JMenuItem("Cut");    popup.add(cutItem);    这里菜单项的建立与加入方法与普通菜单完全相同,大家可以参照上面的做法.    使用弹出式菜单的show方法可以在需要的部件上将其显示出来.    popup.show(JComponent c,int x,int y);    但是在哪里执行这个显示动作呢?这里就又要劳动监听器的大驾了.比如,要在一个标签上实现弹出式菜单,可以这么做:    JLabel label1 = new JLabel("hello 庆");    label1.addMouseListener(new MouseHandler());    class MouseHandler extends MouseAdapter{     public void mouseReleased(MouseEvent e){      if (e.isPopupTrigger()){       popup.show(label1,e.getX(),e.getY());      }     }    }    运行一下,右击该标签看看会不会弹出菜单.        最后,也该不固定菜单,即浮动菜单出场了.    浮动菜单,在我们的软件操作中,是经常用到的.它可以被随意移到任意位置,可以附着,也可以独立于附体.那么在Java中又是如何实现这一切的呢?这里就又要引入一个新的swing组件了,它就是JToolBar.我们可以这样来创建一个JToolBar的实例:    JToolBar toolbar = new JToolBar();    这是最简单的方式,我们还可以再加上标签,JToolBar toolbar = new JToolBar(String label);    如果你想让浮动菜单一开始就具有你想要的比如横的还是竖的方式,可以在创建时加上它的方向参数:    JToolBar toolbar = new JToolBar(int orientation);    当然,我们也可以把它们合成在一起.JToolBar toolbar = new JToolBar(String label,int orientation);    int orientation的取值为常数:SwingConstants.HORIZONTAL,SwingConstants.VERTICAL    在JToolBar中我们可以增加各种组件,最常加的就是按钮,当然我们也可以加入标签,带图片或文字的Action,组合框等.如:    toolbar.add(exitAction);    如同以上几例,我们同样可以在JToolBar中增加组件间的分隔条.toolbar.addSeparator();    在我们使用软件中,当鼠标停在某个组件图标上时,就会显示一个小小的提示,在这里我们也可以实现:如果是普通的组件,可以使用如下方 法:refreshButton.setToolTipText("刷新");但如果加入的是Action,则还是要使用putValue方法,只是引入 的参数不同:    exitAction.putValue(Action.SHORT_DESCRIPTION, "Exit");    当运行程序时,你将看到,浮动工具栏是如何的灵活.        到此,我们已经完成了Java中常用的一些菜单

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值