Chapter74菜单、工具栏、对话框
Chapter 7.4 菜单、工具栏、对话框
目标 使用组件 JMenu bar、 JMenu、 MEnuitem、 Check BoxMenultem和 JRadioButtonmenultem创建菜 单 使用组件 POpupmenu、 MEnuitem、 Check BoxMenultem和 JRadioButtonmenultem创建弹出 式菜单。 使用 JToolBar类创建工具栏。 使用 Action对象生成处理行为事件的代码 使用 JOptionPane类创建标准对话框 扩展 JDialog类来创建自定义对话框 使用 COlor chooser类选择颜色 使用 FIle chooser类显示 Open File和 Save file对话框
目标 · 使用组件JMenuBar、 JMenu 、 JMenuItem、 JCheckBoxMenuItem和JRadioButtonMenuItem 创建菜 单。 · 使用组件JPopupMenu、JMenuItem、 JCheckBoxMenuItem和JRadioButtonMenuItem创建弹出 式菜单。 · 使用JToolBar类创建工具栏。 · 使用Action对象生成处理行为事件的代码 · 使用JOptionPane类创建标准对话框 · 扩展JDialog类来创建自定义对话框 · 使用JColorChooser类选择颜色。 · 使用JFileChooser类显示Open File和Save File对话框
菜单 Menus 菜单能够简化选择,广泛应用于各种视窗应用程序。Java提 供五个实现菜单的类: MEnubar, MEnu, MEnuitem, JCheckBoxMenultem, and JRadioButtonMenuitem MEnubar是最上层的菜单组件,用来存放菜单。菜单由用户 选择的菜单项( menuitem)组成。菜单项是 MEnuitem, JCheckBoxMenuItem, and JRadioButtonMenuItem BlJsk 例。菜单项可以与图标、热键、快捷键等建立关联,可用分隔线 分隔。 My Menu Frame □口区 File Help nev exit
菜单Menus F 菜单能够简化选择,广泛应用于各种视窗应用程序。Java提 供五个实现菜单的类:JMenuBar, JMenu, JMenuItem, JCheckBoxMenuItem, and JRadioButtonMenuItem F JMenuBar是最上层的菜单组件,用来存放菜单。菜单由用户 选择的菜单项(menuItem)组成。菜单项是JMenuItem, JCheckBoxMenuItem, and JRadioButtonMenuItem 的实 例。菜单项可以与图标、热键、快捷键等建立关联,可用分隔线 分隔
菜单栏 MEnubar类 菜单栏( menu bar)能够安放菜单(menu),它 只能添加到框架上。下列代码创建并添加一个 菜单栏到框架上 JFrame f= new jFrame(i f setsize(300, 200)i f setVisible(true)i MEnubAr mb new MEnubAr(i f. setJMenuBar(mb)
菜单栏JMenuBar类 JFrame f = new JFrame(); f.setSize(300, 200); f.setVisible(true); JMenuBar mb = new JMenuBar(); f.setJMenuBar(mb); 菜单栏(menuBar)能够安放菜单(menu),它 只能添加到框架上。下列代码创建并添加一个 菜单栏到框架上:
菜单 MEnu类 可以将菜单menu添加到菜单栏 menu bar.下列代码 创建两个菜单Fie和Help,并将它们添加到菜单栏 b中 JMenu fileMenu new JMenu(File false)i JMenu helpMenu new JMenu("Help", true)i mb. add (filemenu)i mb. add(helpMenu)i
菜单JMenu类 JMenu fileMenu = new JMenu("File" , false); JMenu helpMenu = new JMenu("Help" , true); mb.add(fileMenu); mb.add(helpMenu); 可以将菜单menu添加到菜单栏menuBar. 下列代码 创建两个菜单 File和 Help, 并将它们添加到菜单栏 mb中:
菜单项 MEnuitem类 可以将菜单项添加到菜单中.下列代码创建菜单 项并添加到菜单fi1 mEnu fileMenu. add (new JMenuItem( new)) fileMenu. add (new JMenuItem("open") fileMenu. addseparator()i fileMenu. add(new JMenuItem ("print"))i fileMenu. add(new JMenuItem( exit)i fileMenu. addseparator()i
菜单项 JMenuItem 类 fileMenu.add(new JMenuItem("new")); fileMenu.add(new JMenuItem("open")); fileMenu.addSeparator(); fileMenu.add(new JMenuItem("print")); fileMenu.add(new JMenuItem("exit")); fileMenu.addSeparator(); 可以将菜单项添加到菜单中. 下列代码创建菜单 项并添加到菜单fileMenu:
子菜单 Submenus 可以将一个菜单嵌入到另一个菜单中,嵌入的菜单就成为子菜 单.下列代码添加菜单项“Unⅸx,”^NT;”and“Win95”到子菜单 “ Software JMenu softwareHelpSubMent new JMenu("Software) JMenu hardwareHelpSubMenu new JMenu ("Hardware") helpMenu. add(softwareHelp SubMenu)i helpMenu. add(hardwareHelpSubMenu)i softwareHelpSubMenu. add (new JMenuItem("Unix ))i softwareHelpSubMenu. add (new JMenuItem(NT ) softwareHelpSubMenu. add (new JMenuItem("Win95)) 感 My Menu frame 回区 File Help Software Hardware NT Win95
子菜单Submenus JMenu softwareHelpSubMenu = new JMenu("Software"); JMenu hardwareHelpSubMenu = new JMenu("Hardware"); helpMenu.add(softwareHelpSubMenu); helpMenu.add(hardwareHelpSubMenu); softwareHelpSubMenu.add(new JMenuItem("Unix")); softwareHelpSubMenu.add(new JMenuItem("NT")); softwareHelpSubMenu.add(new JMenuItem("Win95")); 可以将一个菜单嵌入到另一个菜单中,嵌入的菜单就成为子菜 单. 下列代码添加菜单项 “Unix, ” “NT, ” and “Win95” 到子菜单 “Software
J Check Box Menultem / FHJRadioButton Menultem helpMenu. add(new JCheck BoxMenultem("Check it")) JMenu color SubMenu=new JMenu("Color") helpMenu. add( colorHelpSubMenu JRadioButtonMenultem jrbmiBlue, jrbmi Yellow, jrbmiRed colorHelp SubMenu addgrbmiBlue=new JRadio Button Menuitem("Blue")) colorHelp SubMenuaddgrbmi Yellow=new JRadioButtonMenultem("Yellow) colorHelp SubMenu addgjrbmired=new JRadioButtonMenultem("Red")) Button Group btg -new Button Groupo btg. add gjrbmiblue) btg. addgjrbmiYellow) btg. addgjrbmiRed) 是 My Menu - Ox My Menus My Menus File Help File Help File Help Software Software New Hardware Hardware M Check it C Open d Check it Color O Blue Print Exit O Red
JCheckBoxMenuItem和JRadioButtonMenuItem helpMenu.add(new JCheckBoxMenuItem("Check it")); JMenu colorHelpSubMenu = new JMenu("Color"); helpMenu.add(colorHelpSubMenu); JRadioButtonMenuItem jrbmiBlue, jrbmiYellow, jrbmiRed; colorHelpSubMenu.add(jrbmiBlue=new JRadioButtonMenuItem("Blue")); colorHelpSubMenu.add(jrbmiYellow=new JRadioButtonMenuItem("Yellow")); colorHelpSubMenu.add(jrbmiRed=new JRadioButtonMenuItem("Red")); ButtonGroup btg =new ButtonGroup(); btg.add(jrbmiBlue); btg.add(jrbmiYellow); btg.add(jrbmiRed);
RAdiobUtton menuitem JMenu colorHelpSubMenu= new JMenu("Color") helpMenu. add(color HelpSubMenu Radio Menuitem jrbmiBlue, jrbmi Yellow, jrbmired color Help SubMenu. addgrbmiBlue= new JRadioButton Menultem ("Blue"D)) colorHelpSubMenu. addgjrbmi Yellow= new JRadioButtonMenultem("Yellow")) colorHelpSubMenu. addgjrbmiRed-= new JRadioButton Menuitem("Red")) Button Group btg=new Button Groupo btg. addgrbmiBlue) btg. addgrbmi Yellow) btg. addgjrbmiRed)
JRadioButtonMenuItem JMenu colorHelpSubMenu = new JMenu("Color"); helpMenu.add(colorHelpSubMenu); JRadioButtonMenuItem jrbmiBlue, jrbmiYellow, jrbmiRed; colorHelpSubMenu.add(jrbmiBlue = new JRadioButtonMenuItem("Blue")); colorHelpSubMenu.add(jrbmiYellow = new JRadioButtonMenuItem("Yellow")); colorHelpSubMenu.add(jrbmiRed = new JRadioButtonMenuItem("Red")); ButtonGroup btg = new ButtonGroup(); btg.add(jrbmiBlue); btg.add(jrbmiYellow); btg.add(jrbmiRed);
图标、热键和快捷键 σ上述菜单组件具有图标属性icon和热键属性 mnemonic。例如,使用 下面的代码可以给菜单项New和Open设置图标,并可以给菜单项File Help、New和Open设置热键: JMenultem jmINew, jmiOpen; fileMenu. addgjmiNew =new JMenultem("New)) fileMenu. addgjmiOpen=new JMenultem("Open")); jmiNew. setlcon(new Imagelcon ("image/new.gif")) jmiOpen. setIcon(new Imagelcon(image/open.gif)); helpMenu. setMnemonic(H) fileMenu. setMnemonic(F); jmiNew. setMnemonic(N); jmiOpen. setMnemonic(O); jmiOpen set Accelerator(Key Stroke getKey Stroke(Key Event. VK O, Action Event. CTRL MASK)
图标、热键和快捷键 F 上述菜单组件具有图标属性icon和热键属性mnemonic。例如,使用 下面的代码可以给菜单项New和Open设置图标,并可以给菜单项File 、Help、New和Open设置热键: JMenuItem jmiNew, jmiOpen; fileMenu.add(jmiNew = new JMenuItem("New")); fileMenu.add(jmiOpen = new JMenuItem("Open")); jmiNew.setIcon(new ImageIcon("image/new.gif")); jmiOpen.setIcon(new ImageIcon("image/open.gif")); helpMenu.setMnemonic('H'); fileMenu.setMnemonic('F'); jmiNew.setMnemonic('N'); jmiOpen.setMnemonic('O'); jmiOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK));