admin 管理员组

文章数量: 887021


2024年2月21日发(作者:我的世界notch头像拟人超帅)

java JMenu菜单

在一个窗口中,经常需要给窗口添加菜单条。在Java中这一部分是由JMenuBar、JMenu和JMenuItem三个类实现的,分别对应菜单条、菜单和菜单项。

1.菜单栏(JMenuBar)

创建菜单栏是制作菜单的第一步,并JMenuBar的构造方法相当简单,如通过“JMenuBar TestJMenuBar=new JMenuBar();”语句即可创建。而在设置菜单栏时,可以通过表9-22所示的常用方法。

表9-22 JMenuBar的常用方法及说明

方法

add(JMenu c)

getMenu(int index)

getMenuCount( )

setHelpMenu(JMenu menu)

getHelpMenu( )

setSelected(Component sel)

isSelected( )

说明

将指定的菜单添加到菜单栏的末尾。

获取菜单栏中指定位置的菜单。

获取菜单栏上的菜单数。

设置用户选择菜单栏中的“帮助”选项时显示的帮助菜单。

获取菜单栏的帮助菜单。

设置当前选择的组件,更改选择模型。

如果当前已选择了菜单栏的组件,则返回true。

需要说明的是,JMenuBar类根据JMenu添加的顺序从左到右显示,并建立整数索引。

2.菜单(JMenu)

在添加完菜单栏后,并不会显示任何菜单内容,所以还需要在菜单栏中添加菜单内容。菜单内容的JMenu类的构造方法有4种:

 JMenu( ) 构造一个空菜单。

 JMenu(Action a) 构造一个菜单,菜单属性由相应的动作来提供。

 JMenu(String s) 用给定的标志构造一个菜单。

 JMenu(String s,Boolean b) 构造一个新JMenu,用提供的字符串作为其文本并指定其是否为分离式(tear-off)菜单。

在构造完后,使用JMenuBar类的add方法添加到菜单栏中。而JMenu的常用方法如表9-23所示。

表9-23 JMenu类方法及其说明

方法

setModel(ButtonModel newModel)

isSelected( )

setSelected(Boolean b)

isPopupMenuVisible( )

说明

设置菜单的数据模型。

如果菜单当前是被选中的,则返回true。

设置菜单的选择状态。

如果菜单的弹出菜单可见,则返回true。

setPopupMenuVisible(Boolean b)

getPopupMenuOrigin( )

setMenuLocation(int x,int y)

add(JMenuItem menuItem)

add(Component c)

add(Component c,int index)

设置弹出菜单的可见性。如果未启用菜单,则此方法无效。

计算JMenu的弹出菜单的原点。

设置弹出菜单的位置。

将某个菜单项追加到此菜单的末尾,返回添加的菜单项。

将组件追加到此菜单的末尾,并返回添加的控件。

将指定控件添加到此容器的给定位置上,如果index等于-1,则将控件追加到末尾。

创建具有指定文本的菜单项,并将其追加到此菜单的末尾。

将新分隔符追加到菜单的末尾。

在给定的位置插入一个具有指定文本的新菜单项。

在给定的位置插入指定的JMenuitem。

在指定的位置插入分隔符。

获得指定位置的JMenuItem,如果位于pos的组件不是菜单项,则返回null。

获得菜单上的项数,包括分隔符。

从此菜单移除指定的菜单项,如果不存在弹出菜单,则此方法无效。

从此菜单移除指定索引处的菜单项。

如果菜单是“顶层菜单”,返回true。

获得与此菜单关联的弹出菜单,如果不存在将创建一个弹出菜单。

添加菜单事件的侦听器。

获得利用addMenuListener()添加到此JMenu的所有MenuListener组成的数组。

add(String s)

addSeparator( )

insert(String s,int pos)

insert(JMenuItem mi,int pos)

insertSeparator(int index)

getItem(int pos)

getItemCount( )

remove(JMenuItem item)

remove(int pos)

isTopLevelMenu( )

getPopupMenu( )

addMenuListener(MenuListener l)

getMenuListeners( )

3.菜单项(JMenuItem)

在菜单中可以添加不同的内容,可以是菜单项(JMenuItem),可以是一个子菜单,也可以是分隔符。子菜单的添加是直接将一个子菜单添加到母菜单中,而分隔符的添加只需要将分隔符作为菜单项添加到菜单中。

菜单的该实现是一个包含JMenuItem的弹出窗口,用户选择JMenuBar上的项时会显示该JMenuItem。除JMenuItem之外,JMenu还可以包含JSeparator。其菜单项的构建方法如下:

 JMenuItem() 创建不带有设置文本或图标的JMenuItem。

 JMenuItem(Action a) 创建从指定的Action获取其属性的菜单项。

 JMenuItem(Icon icon) 创建带有指定图标的JMenuItem。

 JMenuItem(String text) 创建带有指定文本的JMenuItem。

 JMenuItem(String text, Icon icon) 创建带有指定文本和图标的JMenuItem。

 JMenuItem(String text, int mnemonic) 创建带有指定文本和键盘助记符的菜单项。

菜单中的项的实现,即菜单项本质上是位于列表中的按钮。当用户选择“按钮”时,则执行与菜单项关联的操作。如表9-24所示为JMenuItem菜单项的常用方法。

表9-24 JMenuItem菜单项的常用方法

方法

ionPropertyChanged(Action action,

String propertyName)

addMenuDragMouseListener(MenuDragMouseListener l)

addMenuKeyListener(MenuKeyListener l)

configurePropertiesFromAction(Action a)

getAccelerator( )

getAccessibleContext( )

getComponent( )

getMenuDragMouseListeners( )

getMenuKeyListeners( )

getSubElements( )

getUIClassID( )

init(String text, Icon icon)

isArmed( )

menuSelectionChanged(boolean

isIncluded)

paramString( )

processMenuDragMouseEvent(MenuDragMouseEvent e)

processMenuKeyEvent(MenuKeyEvent e)

removeMenuDragMouseListener(MenuDragMouseListener l)

removeMenuKeyListener(MenuKeyListener l)

说明

更新按钮的状态以响应相关的操作中的属性更改。

将MenuDragMouseListener添加到菜单项。

将MenuKeyListener添加到菜单项。

在此按钮上设置属性以匹配指定Action中的属性。

返回作为菜单项的加速器的KeyStroke。

返回与JMenuItem关联的AccessibleContext。

返回用于绘制此对象的ent。

返回利用addMenuDragMouseListener()添加到JMenuItem的所有MenuDragMouseListener组成的数组。

返回利用addMenuKeyListener()添加到JMenuItem的所有MenuKeyListener的数组。

此方法返回包含此菜单组件的子菜单组件的数组。

返回用于构造呈现此组件时使用的L&F类名称的后缀。

利用指定文本和图标初始化菜单项。

返回菜单项是否被“调出”。

当选择或取消选择MenuSelectionManager调用。

返回JMenuItem的字符串表示形式。

处理菜单中的鼠标拖动。

MenuElement时由处理菜单中的快捷键。

从菜单项中移除 MenuDragMouseListener。

从菜单项中移除 MenuKeyListener。

setAccelerator(KeyStroke keyStroke)

setArmed(boolean b)

setEnabled(boolean b)

setModel(ButtonModel newModel)

setUI(MenuItemUI ui)

updateUI( )

设置修改键,它能直接调用菜单项的操作侦听器而不必显示菜单的层次结构。

将菜单项标识为“调出”。

启用或禁用菜单项。

设置此按钮表示的模型。

设置呈现此组件的外观对象。

利用当前外观的值重置UI属性。

本实例中,介绍了创建菜单栏,并在菜单栏中添加菜单,以及菜单中添加菜单项的方法。其详细代码如下:

import .*;

public class MyMenu extends JFrame {

public MyMenu() {

//定义菜单栏对象

JMenuBar mb = new JMenuBar();

//定义菜单对象

JMenu fileMenu = new JMenu("常规");

JMenu fileMenu2 = new JMenu("签到");

//在菜单中添加子菜单

(new JCheckBoxMenuItem("早上好!"));

(new JCheckBoxMenuItem("下午好!"));

(new JCheckBoxMenuItem("晚安!再见!"));

//在菜单中添加菜单项

("计时");

//添加分隔线

arator();

//在菜单中添加菜单项

(fileMenu2);

//添加分隔线

arator();

//在菜单中添加菜单项

("退出");

//在工具栏中添加菜单

(fileMenu);

//将mb设置到窗口中

setJMenuBar(mb);

e(300, 250);

ible(true);

}

public static void main(String args[]) {

}

new MyMenu();

}

在代码中,通过“JMenu fileMenu = new JMenu("常规");”创建一个菜单内容,然后添加到“JMenuBar mb = new JMenuBar();”所创建的菜单栏中。在“签到”菜单项中,通过“new JCheckBoxMenuItem("早上好!")”语句,创建并添加子菜单,并且子菜单以复选框的方式显示,如图9-18所示。

图9-18 创建菜单


本文标签: 菜单 菜单项 添加