JMenu 的使用
1,在一个窗口中,我们经常需要给窗口添加菜单条。在 Java 中这一部分是由三个类实现的,它们是JMenuBar、JMenu和JMenuItem,分别对应菜单条、菜单和菜单项。
一、菜单条(JMenuBar)
JMenuBar 的构造方法是 JMenuBar(),相当简单。在构造之后,还要将它设置成窗口的菜单条,这里要用 setJMenuBar 方法:
JMenuBar TestJMenuBar=new JMenuBar();
TestFrame.setJMenuBar(TestJMenuBar);
需要说明的是,JMenuBar 类根据 JMenu 添加的顺序从左到右显示,并建立整数索引。
二、菜单(JMenu)
在添加完菜单条后,并不会显示任何菜单,所以还需要在菜单条中添加菜单。菜单 JMenu 类的构造方法有4种:
- JMenu() 构造一个空菜单。
- JMenu(Action a) 构造一个菜单,菜单属性由相应的动作来提供。
- JMenu(String s) 用给定的标志构造一个菜单。
- JMenu(String s,Boolean b) 用给定的标志构造一个菜单。如果布尔值为false,那么当释放鼠标按钮后,菜单项会消失;如果布尔值为true,那么当释放鼠标按钮后,菜单项仍将显示。这时的菜单称为 tearOff 菜单。
在构造完后,使用 JMenuBar 类的 add 方法添加到菜单条中。
三、菜单项(JmenuItem)
接下来的工作是往菜单中添加内容。 在菜单中可以添加不同的内容,可以是菜单项(JMenuItem),可以是一个子菜单,也可以是分隔符。
子菜单的添加是直接将一个子菜单添加到母菜单中,而分隔符的添加只需要将分隔符作为菜单项添加到菜单中。
方
说
add(JMenu
将指定的菜单添加到菜单栏的末尾
getMenu(int
获取菜单栏中指定位置的菜单
getMenuCount()
获取菜单栏上的菜单数
setHelpMenu(JMenu
设置用户选择菜单栏中的“帮助”选项时显示的帮助菜单
getHelpMenu()
获取菜单栏的帮助菜单
setSelected(Component
设置当前选择的组件,更改选择模型
isSelected()
如果当前已选择了菜单栏的组件,则返回true
方
说
setModel(ButtonModel
设置菜单的数据模型
isSelected()
如果菜单当前是被选中的,则返回true
setSelected(boolean
设置菜单的选择状态
isPopupMenuVisible()
如果菜单的弹出菜单可见,则返回true
setPopupMenuVisible(boolean
设置弹出菜单的可见性。如果未启用菜单,则此方法无效
getPopupMenuOrigin()
计 算JMenu的弹出菜单的原点。此方法使用名为Menu.menu PopupOffsetX,Menu.menuPopupOffsetY、Menu.submenuPopup OffsetX和Menu.submenuPopupOffsetY的外观属性调整弹出的确切位置
setMenuLocation(int
设置弹出菜单的位置
add(JMenuItem
将某个菜单项追加到此菜单的末尾,并返回添加的菜单项
add(Component
将组件追加到此菜单的末尾,并返回添加的控件
add(Component
将指定控件添加到此容器的给定位置上,如果index等于-1,则将控件追加到末尾
add(String
创建具有指定文本的菜单项,并将其追加到此菜单的末尾
addSeparator()
将新分隔符追加到菜单的末尾
insert(String
在给定的位置插入一个具有指定文本的新菜单项
insert(JMenuItem
在给定的位置插入指定的JMenuitem
insertSeparator(int
在指定的位置插入分隔符
getItem(int
获得指定位置的JMenuItem,如果位于pos的组件不是菜单项,则返回null
getItemCount()
获得菜单上的项数,包括分隔符
remove(JMenuItem
从此菜单移除指定的菜单项,如果不存在弹出菜单,则此方法无效
remove(int
从此菜单移除指定索引处的菜单项
isTopLevelMenu()
如果菜单是“顶层菜单”,则返回true
getPopupMenu()
获得与此菜单关联的弹出菜单,如果不存在将创建一个弹出菜单
addMenuListener(MenuListener
添加菜单事件的侦听器
getMenuListeners()
获得利用addMenuListener()添加到此JMenu的所有MenuListener组成的数组
四、使用示例:
import java.awt.*;
import javax.swing.*;
public class MenuDemo extends JFrame{
}
运行结果如下图所示:
2,JPopupMenu 是一种特殊的 Menu,大家可能都接触过这个组件提供的功能,例如,我们在浏览 Word 文件时,按下鼠标右键,就会弹出一个PopupMenu。
JPopupMenu 的弹出位置由鼠标指针和系统判断决定。它的构造函数有两种:
(1) JPopupMenu() 建立一个 JPopupMenu 组件对象。
(2) JPopupMenu(String title) 建立一个 JPopupMenu 组件对象并指定它的标题。
弹出式菜单示例:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JPopupMenuDemo extends JFrame{
}