在GUI 程序中,菜单是很常见的组件,利用Swing 提供的菜单组件可以创建出多种样式的菜单。接下来重点对下拉式菜单和弹出式菜单进行介绍。
1. 下拉式菜单
下拉式菜单是很常用的,比如计算机中很多文件的菜单都是下拉式的。在GUI 程序中,创建下拉式菜单需要使用三个组件:JMenuBar(菜单栏)、JMenu(菜单)和JMenuItem(菜单项),以记事本为例,这三个组件在菜单中对应的位置如图9.22 所示。
图9.22 中分别指出了菜单的三个组件,接下来针对这三个组件进行详细讲解。
(1)JMenuBar。
JMenuBar 表示一个水平的菜单栏,它用来管理菜单,不参与同用户的交互式操作。菜单栏可以放在容器的任何位置,但通常情况下会使用顶级窗口(如 JFrame、JDialog)的setJMenuBar(JMenuBarmenuBar)方法将它放置在顶级窗口的顶部。JMenuBar 有一个无参构造函数,当创建菜单栏时,只需要使用new 关键字创建JMenuBar 对象即可。创建完菜单栏对象后,可以调用它的add(JMenu c)方法为其添加JMenu 菜单。
图9.22 三个组件在记事本的菜单中对应的位置
(2)JMenu。
JMenu 表示一个菜单,它用来整合管理菜单项。菜单可以是单一层次的结构,也可以是多层次的结构。在大多数情况下,会使用构造函数JMenu(String text)创建JMenu 菜单,其中参数text 表示菜单上的文本。
JMenu 中还有一些常用的方法,如表9-17 所示。
表9-17 JMenu 类的常用方法
(3)JMenuItem。
JMenuItem 表示一个菜单项,它是菜单系统中最基本的组件。和JMenu 菜单一样,在创建JMenuItem 菜单项时,通常会使用构造方法JMenuItem(String text)为菜单项指定文本内容。
由于JMenuItem 类是继承自AbstractButton 类的,因此可以把它看作一个按钮。如果使用无参的构造方法创建了一个菜单项,则可以调用从AbstractButton 类中继承的setText(String text)方法和setIcon()方法为其设置文本和图标。
【例9.23】下面通过一个案例来学习菜单的创建和使用,如文件9-23 所示。
文件9-23 Example23.java
执行结果
图9.23 【例9.23】执行结果
2. 弹出式菜单
弹出式菜单同样也是很常见的,例如在Windows 桌面单击鼠标右键会出现一个菜单,那就是弹出式菜单。在Java 的Swing 组件中,弹出式菜单用JPopupMenu 表示。
JPopupMenu 弹出式菜单和下拉式菜单一样,都通过调用add()方法添加JMenuItem 菜单项,但它默认是不可见的。如果想要显示出来,则必须调用它的show(Component invoker,int x,int y)方法,该方法中参数invoker 表示JPopupMenu 菜单显示位置的参考组件,x 和y表示invoker 组件坐标空间中的一个坐标,显示的是JPopupMenu 菜单的左上角坐标。(www.xing528.com)
【例9.24】下面通过案例来演示JPopup 组件的用法,如文件9-24 所示。
文件9-24 Example24.java
执行结果
图9.24 【例9.24】执行结果
3. JTable
表格也是GUI 程序中常用的组件,表格是一个由多行、多列组成的二维显示区。Swing的JTable 以及相关类提供了对这种表格的支持。使用了JTable 以及相关类,程序既可以使用简单代码创建表格来显示二维数据,也可以开发出功能丰富的表格,还可以为表格定制各种显示外观、编辑特性。
使用JTable 来创建表格是非常容易的事情,它可以把一个二维数据包装成一个表格,这个二维数据既可以是一个二维数组,也可以是集合元素Vector 对象(Vector 里面包含Vector形成二维数据)。除此之外,为了给该表格的每一列指定列标题,还需要传入一个一维数据作为列标题,这个一维数据既可以是一维数组,也可以是Vector 对象。
JTable 的构造函数如表9-18 所示。
表9-18 JTable 的构造函数
在表9-18 中,TableModel 是用来存储列表数据的,数据包括表头的标题数据与表体的实体数据。TableModel 为功能接口,通常使用其具体的实现类DefaultTableModel,其构造方法如下:
在上述代码中,tbody 表示表体,为一个二维数组;thead 表示表头,为一个一维数组。其具体描述如下。
表体:是一个Object 类型的二维数组,由于多态的自动类型提升,可以直接使用String[][]来存储数据。
表头:是一个Object 类型的一维数组,同样可以直接使用String[]来存储所有的标题字符串。
【例9.25】下面通过案例来学习如何使用JTable 来创建一个简单表格,如文件9-25 所示。
文件9-25 Example25.java
执行结果
图9.25 【例9.25】执行结果
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。