Java中GUI—菜单表格和多文档界面

Java中的高级图形用户界面就是菜单、表格、多文档界面

——菜单

菜单窗口分为两类:常规菜单窗口和弹出式菜单窗口

常规菜单窗口的试图如下:

常规菜单窗口有三部分组成:

1、所以常规菜单由: 菜单栏 (JMenuBar) 、下拉式菜单(JMenu) 、 和 菜单项 组成;

2、菜单项又分成

命令式菜单项(JMenuItem) 这是最常用的一个菜单项

复选式菜单项(JCheckBoxMenuItem)

单选式菜单项(JRadioButtonMenuItem)

3、构建常规菜单窗口的一般步骤是:

创建容器——在容器中添加一个菜单栏——在菜单栏中添加数个下拉式菜单——在每个下拉式菜单中添加数个菜单项

所以可以预见这些菜单栏和下拉式菜单实际上就是一种容器,到最后我们可以知道实际上我们也可以将其他的下拉式菜单作为“菜单项”,构建多级菜单窗口

4、我们把菜单系统的结构图介绍一下

6、分析:

①创建菜单栏——public JMenuBar() ;

②在顶层容器中设置菜单栏

像JFrame、JDialog、JApplet 顶层容器中都有设置菜单栏的方法

public void setJMenuBar(JMenuBar menubar) ;

这样一来就相当于在当前的窗口中添加了菜单栏

③在菜单栏中添加下拉式菜单

JMenuBar类中有成员方法:

public JMenu add(JMenu menu) ;

④在下拉式菜单中添加其他的下拉式菜单或者菜单项

JMenu类中有成员方法:

public JMenuItem add(JMenuItem menuItem) ;

由前面的菜单系统图可以知道由于JMenuBar是JMenuItem的

子类,所以我们不仅能够将命令式菜单项(或其他不常用的菜单项)

作为菜单项,还能够将其他的下拉式菜单作为“菜单项”;这样一来就能

够创建多级菜单但我们将下拉式菜单作为“菜单项”时,在对应的项中

就会出现小的三角箭头:

⑤JMenuItem类的构造方法:

public JMenuItem(String text) ;

public JMenuItem(Icon icon) ;

public JMenuItem(String text , Icon icon) ;

public JMenuItem(String text , Icon icon , int mnemonic) ;

其中参数mnemonic指定了创建的菜单项的助记符,助记符都是

字符型的,但是这个构造方法中的参数是int型的,即需要知道,字符的

Unicode编码,这一点问题没有,因为int和char能够进行隐含的转换

所以在使用这个构造方法时,可以直接用形如‘a’这样的字符作为

mnemonic

⑥助记符设置

菜单项和下拉式菜单都可以拥有助记符,如果菜单项或者下拉式菜单中有

设定的助记符中的字符的话,在菜单项或下拉式菜单中的那个字符的下面

就会自动的添加一条下划线;一旦我们为某个菜单项或者下拉式菜单设定了

助记符,那么我们就能够通过使用“Alt 键+ 助记符键”使下拉式菜单展开

或者执行菜单项所对应的命令;

菜单项和下拉式菜单都有设置助记符的方法:

public void setMnemonic(char mnemonic)

public void setMnemonic(int mnemonic) ;

注意:有些操作系统不支持助记符功能,还有一个问题是,在给

小应用程序添加助记符时,可能会与浏览器本身的助记符发生冲突,

因此,要谨慎一些

⑦快捷键的设置

如果需要可以给菜单项设置快捷键(虽然JMenu继承自JMenuItem,

但是JMenu对象是不能够设置快捷键的,这是有道理的,因为下拉菜

单并不是执行什么命令)在JMenuItem的成员方法中有专门用于设置

快捷键的方法:

public void setAccelerator(KeyStroke keyStroke) ;

参数keyStroke所定义的按键或者按键组合就是该菜单项的快捷键

快捷键由javax.swing.KeyStroke类的实例对象定义,但是我们可以利用

这个类中的静态方法 :

public static KeyStroke getKeyStroke(char key) ;

public static KeyStroke getKeyStroke(String s) ;

来获得KeyStroke对象,非常的简便,其中参数的格式非常的重要

格式:

①方法一种参数是单个char字母 , 但是这个字母必须是大写字母

这个大写字母就作为才菜单项的快捷键

②方法二中参数是字符串s, 字符串 s 必须由三部分组成

“修饰词”+  空格 + “大写字母” ;

比如:“ctrl”+“ ”+“S” ;(或者是“ctrl   ” + “S”) ;

这样一来就将ctrl+S作为了该菜单项的快捷键了;

现在再看看上面的实例程序就会发现,有错误,应该将mC[][]中的小写

字母改成大写字母,否则是不会创建快捷键的;

但是助记符是不区分大小写的,也就说大写小写都一样

当我们将实例中的程序改正后就有这样的运行结果:

⑧实现菜单项的命令或操作事件处理

与相应的按钮事件处理一样,我们从系统图中可以看到

菜单项是javax.swing.AbstractButton的子类,也就说,实际上

菜单项就是按钮,那么事件处理机制就和JButton是一样的

⑨菜单分隔条

在菜单项之间我们可以加上一个菜单分隔条,为的是能够更加清晰的区分

菜单项,菜单分隔条实际上就是下图中open和save之间的一条线

在JMenu中有方法用来为当期的下拉式菜单下属的各个菜单项之间

添加菜单分隔条,而不是在JMenuItem中;

public void insertSeparator(int index) ;

index 的值指定了分隔条添加的位置,从0开始

 

 

——弹出式菜单

①弹出式菜单类是javax.swing.JPopupMenu类,所谓的弹出式菜单

就是我们在许多软件中单击右键是弹出的菜单,比如在桌面上单击右键

出现的菜单;跟常规菜单不同的是,弹出式菜单并需要在容器中设置什么

菜单栏,我们只需要创建一个javax.swing.JPopupMenu类的实例对象

之后要做的是,当我们在某个容器中点击鼠标右键时,

调用javax.swing.JPopupMenu的成员方法show(参数);就能够将

菜单弹出来这就行了

②所以创建弹出式菜单的过程为:

创建JPopupMenu实例对象——向实例对象中添加菜单项JMenuItem

或者下拉式菜单JMenu——在容器中添加鼠标监听器——当在容器中单击

右键时,调用实例对象的show()方法,将菜单显示出来

③下面通过一个实例来显示这个过程

程序的最终结果为:

 

④分析:

1、JPopupMenu成员方法:

public JMenuItem add(JMenuItem menuItem) ;

所以可以将下拉式菜单作为“菜单项”

2、一般不为弹出式菜单项添加快捷键,因为如果添加了快捷键的话,只有当

菜单项展开时,才能够使用快捷键,这已经失去了意义

——表格JTable和多文档界面的内容以后再讲

 

posted @ 2014-08-17 19:53  RoperLee  阅读(2344)  评论(0)    收藏  举报