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 创建菜单
版权声明:本文标题:java JMenu菜单 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1708518382h526511.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论