使用Swing编写win7简易计算器6——菜单1

        至此,按钮的事件处理已经全部弄完了。接下来就开始对菜单栏进行设置了。在Java中有一系列类对菜单进行相关设置,主要有三个,分别是JMenuBar、JMenu及JMenuItem类,对应菜单条、菜单及菜单项的设置。

       先来看看win7计算器的菜单模样:


       win7的计算器菜单条上包括查看、编辑、帮助三个菜单,首先我创建了一个Menu类,再初始化一个JMenuBar对象,再创建三个Jmenu并添加(add)到JMenuBar中。代码如下:

       JMenuBarmenuBar = new JMenuBar(); // 菜单栏

       JMenuJmView = new JMenu("查看(V)"); // 查看菜单

       JMenuJmEdit = new JMenu("编辑(E)"); // 编辑菜单

       JMenuJmHelp = new JMenu("帮助(H)"); // 帮助菜单

 

       menuBar.add(JmView);

       menuBar.add(JmEdit);

       menuBar.add(JmHelp);

       菜单字体也可以改变,方法如页面编程那样使用setFont()方法。接着要将菜单条加到Calculator中,这里要使用Jframe的setMenuBar()方法而不能用add(),否则菜单会很难看的。

       接下来我们注意到,在“查看”菜单下的菜单项有多种样式的,包括单选式菜单项、多选式菜单项,还有子菜单和分隔符(在“编辑”菜单下也有类似菜单项)。这些样式的菜单项如何弄出来呢?在Java中分别有几种类与这些样式的菜单项相对应,分别是JmenuItem的子类JRadioButtonMenuItem和JCheckBoxMenuItem,对应单选及多选式的菜单项。而单选菜单项的选择状况是与同一组的其他菜单状况相关,如果是点击了同一组的其他单选菜单项,则原本菜单项的选择将被取消。Java中提供ButtonGroup类对此进行控制,具体代码如下,以分隔符分出的第一部分为例:

       JRadioButtonMenuItem[]jrView = { new JRadioButtonMenuItem("标准型(T)"),new JRadioButtonMenuItem("科学型(S)"), newJRadioButtonMenuItem("程序员(P)"), new JRadioButtonMenuItem("统计信息(A)") }; // 单选菜单条

       ButtonGroupbuttonGroup1 = new ButtonGroup();

       for(int i = 0; i < jrView.length; i++) {

                 jrView[i].setFont(f);

                 buttonGroup1.add(jrView[i]);

                 JmView.add(jrView[i]);

              }

       子菜单里的单选菜单项与分隔符分开的第三部分是一组的,所以要放到一个ButtonGroup中。

       多选式菜单项也是同理加上去即可。

       而子菜单则可以直接使用JMenu类,将其加入菜单中即可出现子菜单的效果。

       分隔符则直接使用JMenu的addSeperator()方法添加在适当位置。

       另外在“编辑”菜单下有些菜单项是灰色的,表示不可用。这可以用菜单项的setEnable(false)将其禁用即可。

       最后将字体设置一下,最终效果是这样的:


       具体编程的细节还可参考:http://docs.oracle.com/javase/tutorial/uiswing/components/menu.html。这样子就大致完成了菜单的外貌。接下来还有关于快捷键、事件处理的部分留到最后一天解决。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值