Swing菜单设计.doc_第1页
Swing菜单设计.doc_第2页
Swing菜单设计.doc_第3页
Swing菜单设计.doc_第4页
Swing菜单设计.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Swing菜单设计学习使用一个新的工具,常常会从菜单学起。使用菜单可以让具有多个选项的程序界面布局更加合理。菜单是Swing提供的非常重要的控件,本章将对Swing的菜单进行介绍,主要包括如下内容: Swing菜单简介; JMenuBar; JMenuItem; JMenu; 在NetBeans中使用菜单控件; JCheckBoxMenuItem与JRadioButtonMenuItem; JPopMenu。9.1 Swing菜单简介菜单是编程中经常用到的一种控件,本节将对菜单控件进行介绍,主要包括如下内容: Swing菜单控件说明; 一个简单的菜单程序。9.1.1 Swing菜单控件说明Swing菜单控件是JComponent类的子类,因此其具有Swing控件的所有优点。下面列出了Swing菜单控件的一些显著特性。 可以在菜单中使用图标。 菜单项可以为单选按钮或者复选框。 可以为菜单项指定加速键和快捷键。 大多数的标准控件都可以用做菜单项。另外,Swing菜单为程序提供了大家熟悉的菜单分隔线、弹出式菜单和子菜单等功能。Swing通过调整容器的边框,把菜单栏置于Swing容器的顶部,图9-1所示为典型的Swing菜单。位于窗口顶部的菜单栏包含了下拉菜单的名称,单击该名称可以打开其中包含的菜单项和子菜单项的菜单。当用户单击某一菜单项的时候,其他的菜单都会关闭。图9-2是与菜单相关类的继承关系图。 图9-1 典型的菜单界面 图9-2 菜单相关类的继承关系图下面给出了图9-2中菜单相关类的简单说明。 菜单(JMenu)和菜单项(JMenuItem)都扩展了AbstractButton类。菜单和菜单项包含与许多Swing按钮相同的特性。比如,菜单项可以在鼠标经过时,高亮显示;可以被单击,表明用户做出了选择;可以像按钮一样被禁止使用。 复选菜单项(JCheckBoxMenuItem)与单选菜单项(JRadioButtonMenuItem)扩展了JMenuItem,其也具有与许多Swing按钮相同的特性,如可以在选中与非选中状态之间进行切换。 JMenu扩展了JMenuItem类,每个JMenu对象都包含一个用做菜单标题的隐藏菜单项。菜单不一定出现在菜单栏上,其可以被嵌入其他的菜单中充当子菜单。菜单栏包含一个或多个菜单,其使用与平台相关的位置摆放,通常位于窗口的上方。 弹出式菜单(JPopupMenu)只有在用户执行了与平台相关的鼠标操作后才能出现。例如,在一个支持弹出式菜单的控件上用鼠标右键单击,在鼠标所在处将弹出快捷菜单。对于图9-2中给出的每一个菜单控件,在本章后面的小节中都会进行详细地介绍。9.1.2 一个简单的菜单程序上个小节中对Swing菜单控件进行了简单地说明,本节中给出了一个使用菜单的简单程序,代码如下:import java.awt.*;import javax.swing.*;public class DemoSimpleMenu extends JFrameJMenuBar jMenuBarOne; JMenu fileMenu,editMenu,newFileMenu;JMenuItem openFile,closeFile;/声明菜单JCheckBoxMenuItem newFileTxt,newFileJava;JRadioButtonMenuItem copyFile,pasteFile;ButtonGroup buttonEdit;public DemoSimpleMenu() jMenuBarOne=new JMenuBar(); buttonEdit=new ButtonGroup(); /* *创建几个JMenu对象 */ fileMenu=new JMenu(文件); editMenu=new JMenu(编辑); newFileMenu =new JMenu(新建文件); openFile=new JMenuItem(打开文件); closeFile=new JMenuItem(关闭文件); /* *创建两个JCheckBoxMenuItem对象 */ newFileTxt=new JCheckBoxMenuItem(文本文件); newFileJava=new JCheckBoxMenuItem(Java文件); /* *创建两个JRadioButtonMenuItem对象 */ copyFile=new JRadioButtonMenuItem(复制); pasteFile=new JRadioButtonMenuItem(粘贴); buttonEdit.add(copyFile); buttonEdit.add(pasteFile); this.setJMenuBar(jMenuBarOne); jMenuBarOne.add(fileMenu); jMenuBarOne.add(editMenu); /* *向fileMenu中添加JMenuItem对象 */ fileMenu.add(openFile); fileMenu.add(closeFile); fileMenu.addSeparator(); fileMenu.add(newFileMenu); newFileMenu.add(newFileTxt); newFileMenu.add(newFileJava); editMenu.add(copyFile); editMenu.add(pasteFile); /* *设置窗体的大小、位置、可见性以及按下关闭按钮时的默认动作 */ this.setTitle(菜单的简单使用); this.setBounds(100,100,250,150); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); public static void main(String args) new DemoSimpleMenu();编译并运行程序,界面如图9-3所示。选择“文件”/“新建文件”选项,界面如图9-4所示。 图9-3 程序运行示意图 图9-4 展开子菜单上面的程序用到了菜单栏(JMenuBar)、菜单项、菜单、复选菜单项以及单选菜单项。在后面的章节中将会详细地为读者讲述这些控件的使用。9.2 菜单栏JMenuBarJMenuBar用来创建一个水平的菜单栏,本节将会对JMenuBar进行介绍,主要包括如下内容: JMenuBar简介。 在NetBeans中使用JMenuBar。9.2.1 JMenuBar简介JMenuBar扩展了javax.swing.JComponent类,其功能与java.awt.MenuBar基本相同,都是用来创建一个水平菜单栏。开发人员可以使用JMenuBar类的add方法向菜单栏中添加菜单,JMenuBar为添加到其中的菜单分配一个整数索引,并会根据该索引将菜单从左到右依次显示。创建菜单栏是非常简单的,代码如下:JMenuBar myJMenuBar=new JMenuBar();另外,还可以使用JMenuBar的另外一个构造器创建带有菜单的菜单栏,代码如下:JMenuBar meunJMenuBar=new JMenuBar(new JMenu(Edit);创建完菜单栏以后,在通常情况下,可以使用Jdialog、Japplet或JFrame类的setJMenuBar方法将菜单栏添加到窗体中。以下代码给出了如何将前面创建的myJMenuBar添加到JDialog中:JDialog myJDialog=new JDialog();myDialog.setJMenuBar(myJMenuBar);提示菜单栏是一个可以放置在窗体中的任何位置的控件,对于用上述方法添加到窗体的菜单栏,一般显示在窗体的顶部。除了使用上述方法向窗体中添加菜单栏以外,还可以使用add方法将菜单栏添加到窗体中,下面代码显示了将myJMenuBar添加到JFrame中:JFrame myJFrame=new JFrame();myJFrame.add(myJMenuBar,BorderLayout.SOUTH);此时,菜单栏被置于窗体的NORTH区域。图9-5 位于窗口底部的菜单栏提示开发人员至少要给菜单栏中添加一个有名称的菜单,这样菜单栏才能具备一定的高度。否则,将显示为一条与分割线相似的细线。JMenuBar类提供了很多方法进行相应的操作,表9-1给出了一些常用的方法及说明。表9-1 JMenuBar的常用方法及说明方 法说 明add(JMenuc)将指定的菜单添加到菜单栏的末尾getMenu(intindex)获取菜单栏中指定位置的菜单getMenuCount()获取菜单栏上的菜单数setHelpMenu(JMenumenu)设置用户选择菜单栏中的“帮助”选项时显示的帮助菜单getHelpMenu()获取菜单栏的帮助菜单setSelected(Componentsel)设置当前选择的组件,更改选择模型isSelected()如果当前已选择了菜单栏的组件,则返回true另外JMenuBar还可以使用父类中的很多方法,这里就不再给出了,需要用到的话可以查阅相关的API。 9.2.2 在NetBeans中使用JMenuBar在NetBeans中使用JMenuBar控件十分简单,只需要通过鼠标拖曳即可向容器中添加JMenuBar。例如,要向一个JFrame中添加JMenuBar,只需要在Palette窗口中选中JMenuBar选项,然后在GUI设计器中单击即可完成添加。成功添加JMenuBar后,该JMenuBar会自动放置在JFrame的顶端,并且其中自动包含了一个text属性值为Menu的菜单。在对象观察器窗口中选中JMenuBar,在属性对话框中可以修改其相应的属性。对于如何向JMenuBar中添加菜单、菜单项,将会在下面的章节中进行介绍。9.3 菜单项JMenuItem开发具有菜单的程序时,菜单项是不可或缺的一种控件。本节将对菜单项进行简单地介绍,主要包括如下内容: 菜单项简介。 为菜单项添加快捷键和加速器。9.3.1 菜单项简介JMenuItem本质上是一个继承自AbstractButton的按钮,不过它又不完全等同于按钮。当鼠标经过某个菜单项时,Swing就认为该菜单项被选中,但并不会触发任何事件;当用户在菜单项上释放鼠标,此时Swing也会认为该选项被选中,并触发事件完成相应的操作。1菜单项的构造器及常用方法说明Swing的菜单项可以包含图像或者完全由图像构成,通过向JMenuItem的构造器传递一个Icon对象,即可创建一个带图标的菜单项,下面代码显示了如何创建一个带有文本Open和图标open.gif的菜单项。JMenuItem iconJMenuItem=new JMenuItem(Open,new ImageIcom(open.gif);JMenuItem一共提供了6个构造器,表9-2给出了其中常用的4个及其说明。表9-2 JMenuItem构造器及其说明构 造 器说 明JMenuItem(Iconicon)创建带有指定图标的JMenuItemJMenuItem(Stringtext)创建带有指定文本的JMenuItemJMenuItem(Stringtext,Iconicon)创建带有指定文本和图标的JMenuItemJMenuItem(Stringtext,intmnemonic)创建带有指定文本和快捷键的JMenuItem默认情况下,新创建的JMenuItem的文字位于图像的左侧,开发人员可以使用setHor- izontalTextAlignment方法用来改变文本与图像的位置,代码如下:iconJMenuItem.setHorizontalTextAlignment(SwingConstants.RIGHT);除了上面介绍的几个方法之外,JMenuItem还提供了一些方法供开发人员使用,表9-3给出了这些方法及其说明。表9-3 JMenuItem的常用方法及说明方 法说 明init(Stringtext,Iconicon)利用指定文本和图标初始化菜单项addMenuDragMouseListener(MenuDragMouseListenerl)将MenuDragMouseListener添加到菜单项,该接口中的方法用来处理MenuDragMouseEvent事件removeMenuDragMouseListener(MenuDrag MouseListenerl)从菜单项中移除MenuDragMouseListener续表方 法说 明getMenuDragMouseListeners()获取利用addMenuDragMouseListener添加到此JMenuItem的所有MenuDragMouseListener组成的数组addMenuKeyListener(MenuKeyListenerl)将MenuKeyListener添加到菜单项,该接口中的方法用来处理MenuKeyEvent事件removeMenuKeyListener(MenuKeyListenerl)从菜单项中移除MenuKeyListenergetMenuKeyListeners()返回利用addMenuKeyListener添加到此JMenuItem的所有MenuKeyListener的数组提示JMenuItem还可以使用父类中提供的很多方法进行相应的操作,需要的用户可以查阅相关的API,这里不再赘述。2菜单项事件及其处理方法JMenuItem触发的事件有很多种,主要包括如下两种: ActionEvent事件,其在菜单被选中时触发; ChangeEvent事件,JMenuItem状态变化时被触发。提示为上述两个事件添加或删除监听器的方法都继承自AbstractButton类。当鼠标在JMenuItem中拖动时,会触发MenuDragMouseEvent事件。当菜单项接收到一个按键事件时,JMenuItem还会产生MenuKeyEvent。表9-3已经给出了为这两个事件注册监听器的方法。提示对于MenuDragMouseEvent与MenuKeyEvent的详细介绍,需要用到的读者可以查阅其API。9.3.2 为菜单项添加快捷键和加速器为菜单项添加快捷键和加速器,用户在使用时可以提高工作效率。下面将对快捷键和加速器进行简单的介绍。1快捷键通过使用JMenuItem类的构造器JMenuItem(Stringtext,intmnemonic)可以指定该菜单项的快捷键,下面代码创建了一个设置了快捷键O的菜单项。JMenuItem mnemJMenuItem=new JMenuItem(Open File,O);快捷键会自动在菜单项中显示出来,其方式是菜单项标签字符串中与快捷键字母相同的第一个字母加下划线,如图9-6所示。菜单项“Open File”的“O”字母有下划线,这表明它是该菜单项的快捷键。同样,“C”是“Close File”的快捷键。如果菜单项标签字符串中不包含快捷键字母,通过该快捷键仍然可以选择该菜单项,但是在菜单项上却不能显示该快捷键。说明通过快捷键调用菜单项时要将“Alt”键和快捷键同时按下,如果快捷键为“O”则按下“Alt+O”组合键。2加速器除了在菜单项中使用快捷键外,开发人员还可以使用setAccelerator方法为菜单项指定一个加速器。加速器和快捷键的区别是:快捷键用来从当前打开的菜单中选择一个子菜单或者菜单项,而加速器可以在不打开菜单的情况下选择菜单项。下面为将“Ctrl+O”设置为菜单项加速器的代码。myJMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK);/ myJMenuItem为已有的菜单项当加速器被添加到菜单项上时,对应的加速键就会自动地显示在相应的菜单项上,如图9-7所示。图9-7 使用加速器当用户按下了加速器键时,相应的菜单项就会被选择,同时触发一个动作事件,如同使用鼠标选择了该菜单项一样。事实上加速器并没有打开菜单,只是激活同菜单关联的事件。9.4 菜单JMenuJMenu是可以连接到JMenuBar对象或者其他JMenu对象上的菜单。直接添加到JMenuBar上的菜单叫做顶层菜单,连接到其他JMenu对象上的菜单称为子菜单。典型的非顶层JMenu都有右箭头标记,表明当用户选择该JMenu时,在JMenu旁还会弹出子菜单,如图9-8所示。下面给出了一些关于JMenu的简单说明。 可以把JMenu看作组合控件,由JMenuItem与弹出式菜单(后面小节将会介绍)两种控件组合而成。JMenuItem作为JMenu的标题,而单击JMenuItem则会在其下方放或者右侧出现弹出式菜单。 JMenu对象给添加到其中的每一个菜单项都赋予一个整数索引,并依据索引使用菜单布局管理器调整菜单项的顺序。 JMenu是JMenuItem的子类,除了可以使用add方法向JMenu中添加菜单项或子菜单之外,还可以使用add方法向菜单中添加简单的字符串,此时JMenu对象会自动地创建具有相应标题的JMenuItem对象。下面代码创建了两个JMenu,并将其中的一个作为另一个的子菜单。JMenu fatherJMenu=new JMenu(父菜单);JMenu sonJMenu=new JMenu(子菜单);fatherJMenu.add(sonJMenu);JMenu类提供了很多方法供开发人员使用,表9-4给出了其中一些常用的方法及说明。表9-4 JMenu类方法及其说明方 法说 明setModel(ButtonModelnewModel)设置菜单的数据模型isSelected()如果菜单当前是被选中的,则返回truesetSelected(booleanb)设置菜单的选择状态isPopupMenuVisible()如果菜单的弹出菜单可见,则返回truesetPopupMenuVisible(booleanb)设置弹出菜单的可见性。如果未启用菜单,则此方法无效getPopupMenuOrigin()计算JMenu的弹出菜单的原点。此方法使用名为Menu.menu PopupOffsetX,Menu.menuPopupOffsetY、Menu.submenuPopup OffsetX和Menu.submenuPopupOffsetY的外观属性调整弹出的确切位置setMenuLocation(intx,inty)设置弹出菜单的位置add(JMenuItemmenuItem)将某个菜单项追加到此菜单的末尾,并返回添加的菜单项add(Componentc)将组件追加到此菜单的末尾,并返回添加的控件add(Componentc,intindex)将指定控件添加到此容器的给定位置上,如果index等于-1,则将控件追加到末尾add(Strings)创建具有指定文本的菜单项,并将其追加到此菜单的末尾addSeparator()将新分隔符追加到菜单的末尾insert(Strings,intpos)在给定的位置插入一个具有指定文本的新菜单项insert(JMenuItemmi,intpos)在给定的位置插入指定的JMenuiteminsertSeparator(intindex)在指定的位置插入分隔符getItem(intpos)获得指定位置的JMenuItem,如果位于pos的组件不是菜单项,则返回nullgetItemCount()获得菜单上的项数,包括分隔符remove(JMenuItemitem)从此菜单移除指定的菜单项,如果不存在弹出菜单,则此方法无效remove(intpos)从此菜单移除指定索引处的菜单项isTopLevelMenu()如果菜单是“顶层菜单”,则返回truegetPopupMenu()获得与此菜单关联的弹出菜单,如果不存在将创建一个弹出菜单addMenuListener(MenuListenerl)添加菜单事件的侦听器getMenuListeners()获得利用addMenuListener()添加到此JMenu的所有MenuListener组成的数组提示如果想要为JMenu创建快捷键,可以调用从JMenuItem中继承的setMnemonic方法。另外,JMenu还可以使用其父类中的很多方法进行相应的操作,需要用到的用户可以查阅相关的API9.5 在NetBeans中使用菜单控件前面的几节对JMenuBar、JMenuItem和JMenu进行了详细地介绍。本节将通过一个例子介绍如何在NetBeans中使用这些控件。启动NetBeans,按照如下步骤完成该例。(1) 创建一个名称为menu的项目,并将其主类的名称设置为beans.swing. menu.Demo。(2) 向menu中添加一个通过JFrame Form模版创建的名称为DemoJMenuOne的类。(3) 向DemoJMenuOne中添加一个JMenuBar,将其名称修改为jMenuBarGlobal。(4) 在对象观察器窗口中选中jMenuBarGlobal节点下的jMenu1节点,该JMenu是添加JMenuBar时自动添加的,将其名称修改为jMenuFile。在属性对话框中将其text属性的值修改为File。(5) 在对象观察器窗口中用鼠标右键单击jMenuBarGlobal节点,在弹出的菜单中选择“Add JMenu”选项,向jMenuBarGlobal中添加一个JMenu。将该JMenu的名称修改为jMenuEdit,并将其text属性的值修改为Edit。(6) 按步骤(5)所述再向jMenuBarGlobal中添加一个名称为jMenuAbout,text属性值为About的JMenu。(7) 此时,GUI设计器中内容如图9-9所示。(8) 在对象观察器中用鼠标右键单击jMenuFile节点,依次选择右键菜单中的“Add”/“JMenuItem”选项,向jMenuFile中添加一个JMenuItem,将其名称修改为jMenuItem OpenFile,将其text属性的值修改为Open File,并通过修改icon属性的值为jMenuItemOpen File添加图标。(9) 为jMenuItemOpenFile设置加速器。在jMenuItemOpenFile的属性对话框中,单击accelerator属性右侧的按钮,弹出如图9-10所示的窗口。 图9-9 菜单栏 图9-10 设置加速键窗口(10)通过在Virtual Key列表框中选择要使用的按键或者单击键盘上的相应按键修改Key Stroke文本框的值来为jMenuItemOpenFile设置加速器的按键。还可以通过选择“Ctrl”、“Alt”或者“Shift”复选框设置加速器的组合键。这里将使用“Ctrl+O”作为加速器的组合键。单击“OK”按钮完成设置。(11)向jMenuFile中添加名称为jMenuItemSaveFile的JMenuItem,将text属性的值修改为Save File,修改icon属性的值并为其添加图标。按照步骤(10)所述为jMenuItem- SaveFile设置加速器,并将加速器组合键设置为“Ctrl+S”。(12)在对象观察器窗口中用鼠标右键单击jMenuFile节点,依次选择右键菜单中的“Add”/“JSeparator”选项,向jMenuFile添加一个JSeparator(菜单分隔条)。(13)向jMenuFile中添加名称为jMenuOthers的JMenu,将其text属性值修改为Others。(14)向jMenuOthers中添加名称分别为jMenuItemSetting和jMenuItemSaveAs的Jmenu Item,并将其text属性的值分别修改为Setting和SaveAs。(15)向jMenuFile中添加名称为jMenuItemExit的JMenuItem,将text属性的值修改为 Exit,并将加速器组合键设置为“Ctrl+E”。(16)分别为jMenuItemOpenFile、jMenuItemSaveFile和jMenuItemExit添加ActionEvent事件的处理方法,并向相应方法添加如下代码。 向jMenuItemOpenFileActionPerformed方法中添加如下代码:JFileChooser fileChooser=new JFileChooser();fileChooser.showOpenDialog(this);/打开文件选择器对话框 向jMenuItemSaveFileActionPerformed方法中添加如下代码:JFileChooser fileChooser=new JFileChooser();fileChooser.s showSaveDialog(this);/打开文件保存对话框 向jMenuItemExitActionPerformed方法中添加如下代码:System.exit(0);(17)将下列代码添加到Demo类的public static void main(String args)方法中:java.awt.EventQueue.invokeLater(new Runnable() public void run() new DemoJMenuOne ().setVisible(true); (18) 编译并运行项目,界面如图9-11所示。(19) 依次选择“File”/“Others”选项,界面如图9-12所示。(20) 选择“File”/“Open”选项,打开文件选择器对话框,界面如图9-13所示。提示本程序并没有真正地从选择的文件中读取内容。(21)在如图9-11所示状态下,按下“Ctrl+S”组合键后,会打开文件保存对话框,界面如图9-14所示。 图9-11 程序运行界面 图9-12 选取Others选项 图9-13 打开文件选择器 图9-14 打开文件保存对话框(22)通过选择File菜单中的Exit选项,或者按下“Ctrl+E”组合键,即可退出程序。9.6 单选与复选菜单项前面几节介绍了JmenuBar、JMenuItem以及JMenu这几种菜单中经常使用的控件。除此之外,Swing还提供了另外的两种菜单项,即JCheckBoxMenuItem(复选菜单项)与JRadio- ButtonMenuItem(单选菜单项),本节将为读者介绍这两种菜单项,主要包括如下内容: 复选菜单项JCheckBoxMenuItem简介。 单选菜单项JRadioButtonMenuItem简介。 在NetBeans中使用JCheckBoxMenuItem与JRadioButtonMenuItem。9.6.1 复选菜单项JCheckBoxMenuItemJCheckBoxMenuItem是实现了复选框功能的菜单项,具有JCheckBox的一切特征。JCheckBoxMenuItem可以实现同时选中几个菜单的功能。像常规菜单项一样,JCheckBox- MenuItem可以有与之关联的文本或图标,或者二者兼而有之。下面的代码创建了一个带有文本、图标以及给定选中状态的JCheckBoxMenuItem:ImageIcon ii=new ImageIcon(blacktitle.jpg);JCheckBoxMenuItem myJCheckBoxMenuItem=new JCheckBoxMenuItem(黑色,ii,true);JCheckBoxMenuItem类一共提供了7个构造器,表9-5给出了其中常用的5个及其说明。表9-5 JCheckBoxMenuItem的常用构造器及说明构 造 器说 明JCheckBoxMenuItem(Iconicon)创建有一个图标的、初始未被选定的复选框菜单项JCheckBoxMenuItem(Stringtext)创建一个带文本的、初始未被选定的复选框菜单项JCheckBoxMenuItem(Stringtext, Iconicon)创建带有指定文本和图标的、初始未被选定的复选框菜单项JCheckBoxMenuItem(Stringtext, booleanb)创建具有指定文本和选择状态的复选框菜单项JCheckBoxMenuItem(Stringtext, Iconicon,booleanb)创建具有指定文本、图标和选择状态的复选框菜单项JCheckBoxMenuItem类本身并没有提供特别的方法,主要使用从父类中继承的方法进行操作。其中的很多方法在前面的章节中已经进行过详细地介绍,这里就不再重复给出了,需要用到的用户可以查阅相关的API。提示JCheckBoxMenuItem具有很多复选框(JCheckBox)的功能,具体的使用方法和复选框相同,读者可以参照本书中介绍复选框的章节自行学习。9.6.2 单选菜单项JRadioButtonMenuItemJRadioButtonMenuItem类是实现了单选按钮功能的菜单项,其具有JRadioButton类的一切特征。使用JRadioButtonMenuItem主要是为了实现几选一的功能,所以其主要被编组使用,这与JRadioButton相同。下面的代码创建了一个带有文本、图标以及给定状态的JRadioButtonMenuItem:ImageIcon ii=new ImageIcon(boy.jpg);JRadioButtonMenuItem myJRadioButtonMenuItem =new JRadioButtonMenuItem (男,ii,true);要使得添加到同一组中的JRadioButtonMenuItem具有排它性,则需要使用ButtonGroup进行编组,具体方法如下代码所列:ButtonGroup buttonGroup=new ButtonGroup();buttonGroup.add(myJRadioButtonMenuItem);JRadioButtonMenuItem类一共提供了8个构造器,表9-6给出了其中常用的5个及其说明。表9-6 JRadioButtonMenuItem类的常用构造器构 造 器说 明JRadioButtonMenuItem(Iconicon)创建一个带图标的JRadioButtonMenuItemJRadioButtonMenuItem(Stringtext)创建一个带文本的JRadioButtonMenuItemJRadioButtonMenuItem(Stringtext,Iconicon)创建一个具有指定文本和图标的单选按钮菜单项JRadioButtonMenuItem(Iconicon,booleanselected)创建一个具有指定图像和选择状态的单选按钮菜单项JRadioButtonMenuItem(Stringtext, Iconicon, booleanselected)创建一个具有指定的文本、图像和选择状态的单选按钮菜单项与JCheckBoxMenuItem一样,JRadioButtonMenuItem类本身也没有提供特别常用的方法,主要也是使用从父类继承的方法对JRadioButtonMenuItem进行操作。需要用到这些方法的用户请查阅相关的API。提示JRadioButtonMenuItem具有很多单选按钮(JRadioButton)的功能,具体使用的方法和单选按钮相同,读者可以参照本书中介绍单选按钮的章节。9.6.3 在NetBeans中使用单选与复选菜单项前面的两个小节分别对JCheckBoxMenuItem和JRadioButtonMenuItem做了简要地介绍。在本小节,将通过一个例子如何在NetBeans中使用这两种菜单项。本例并没有创建一个全新的程序,而是对第5节给出的程序进行了改造。打开menu项目,并打开其中的DemoJMenuOne. java文件,按照如下步骤完成该例。(1)在对象观察器窗口中用鼠标右键单击jMenuEdit节点,依次选择右键菜单的“Add”/“JCheckBoxMenuItem”选项,向jMenuEdit添加一个JCheckBoxMenuItem。将其名称修改为jCheckBoxMenuItemBold,text属性的值修改为“黑体”。(2)再向jMenuEdit中添加一个名称为jCheckBoxMenuItemItalic的JCheckBoxMenu Item,并将其text属性的值修改为“斜体”。(3)向jMenuEdit中添加一个JSepartor。(4)在对象观察器窗口中用鼠标右键单击jMenuEdit节点,依次选择右键菜单的“Add”/“JRadioButtonMenuItem”选项,向jMenuEdit添加一个JRadioButtonMenuItem。将其名称修改为jRadioButtonMenuItemEighteen,text属性的值修改为“18号字”,同时将其selected属性设为选中状态。(5)按照步骤(4)所述,再向jMenuEdit中添加两个JRadioButtonMenuItem,将其名称分别修改为jRadioButtonMenuItemSixteen和jRadioButtonMenuItemTwenty。将text属性的值修改为“16号字”和“20号字”。(6)向窗体中添加名称为buttonGroupOne的ButtonGroup。并将上面添加的3个单选菜单项的buttonGroup属性的值均修改为buttonGroupOne。(7)向DemoJMenuOne类添加签名为public void dealAction(java.awt.event.ItemEvent evt)的方法,并将下列代码添加到该方法中:if(evt.getSource()=jCheckBoxMenuItemBold) /处理jCheckBoxMenuItemBold的事件 if(jCheckBoxMenuItemBold.isSelected() JOptionPane.showMessageDialog(this,你选中了黑体复选菜单!,提示: ,JOptionPane.INFORMATION_MESSAGE); else JOptionPane.showMessageDialog(this,你取消了对黑体复选菜单的选 择!,提示:,JOptionPane.INFORMATION_MESSAGE); else if(evt.getSource()=jCheckBoxMenuItemItalic) /处理jCheckBoxMenuItemItalic的事件 if(jCheckBoxMenuItemItalic.isSelected() JOptionPane.showMessageDialog(this,你选中了斜体复选菜单!,提示: ,JOptionPane.INFORMATION_MESSAGE); else JOptionPane.showMessageDialog(this,你取消了对斜体复选菜单的选择! ,提示:,JOptionPane.INFORMATION_MESSAGE); else if(evt.getSource()=jRadioButtonMenuItemEighteen) /处理jRadioButtonMenuItemEighteen的事件 if(jRadioButtonMenuItemEighteen.isSelected() JOptionPane.showMessageDialog(this,“18号字”单选菜单被选中!,提示: ,JOptionPane.INFORMATION_MESSAGE);else if(evt.getSource()=jRadioButtonMenuItemSixteen) /处理jRadioButtonMenuItemSixteen的事件 if(jRadioButtonMenuItemSixteen.isSelected() JOptionPane.showMessageDialog(this,“16号字”单选菜单被选中!, 提示: ,JOptionPane.INFORMATION_MESSAGE);else if(evt.getSource()=jRadioButtonMenuItemTwenty) /处理jRadioButtonMenuItemTwenty的事件 if(jRadioButtonMenuItemTwenty.isSelected() JOptionPane.showMessageDialog(this,“20号字”单选菜单被选中!, 提示: ,JOptionPane.INFORMATION_MESSAGE);(8)向jMenuEdit菜单中的所有JCheckBoxMenuItem和JRadioButtonMenuItem添加ItemEvent事件的处理方法,并分别将下列代码添加到每个方法中:thi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论