Java语言
程序设计 第十九讲JavaGUI编程高级主要内容
给GUI应用程序添加菜单“JavaEditor”项目的界面更新为组件定制弹出式菜单给GUI应用程序添加工具栏给GUI应用程序添加菜单
菜单概述
菜单的作用:给应用程序设置操作菜单。菜单组成
JMenuItem---菜单项,直接指向一个具体的操作JMenu---菜单,其中可加入菜单项(JMenuItem)和菜单(Jmenu)JMenuBar----菜单栏,在其中可以加入菜单(JMenu)JMenuBarJMenuJMenuItem
菜单的创建和组织
菜单的创建
JMenu、JMenuBar和JMenuItem类的构造方法见表:菜单类别构造方法JMenuBar
publicJMenuBar()
Java语言程序设计
JMenuJMenuItem
publicJMenu(Strings)publicJMenuItem(Strings)
如创建一个“File”菜单:JMenufile=newJMenu("File");
菜单的组织
菜单栏可象别的组件一样添加到应用程序窗口。JFrame窗口加入菜单栏的方法:
publicvoidsetJMenuBar(JMenuBarmenubar)
JMenuBar加入JMenu的方法:
publicJMenuadd(JMenuc)
JMenu中加入JMenu、JMenuItem、分隔线的方法:
publicJMenuItemadd(JMenuItemmenuItem)publicvoidaddSeparator()
说明:因JMenu是JMenuItem的子类,故add(JMenuItemmenuItem)也可加入JMenu菜单。如:file.add(newJMenuItem("New"));file.addSeparator();
快捷键设置
JMenu的快捷键通常是Alt+字符键的组合,可用setMnemonic方法设置:
JMenu对象.setMnemonic(intmnemonic);
JMenuItem的快捷键可以是Ctrl+字符键或Alt+字符键的组合,可用setAccelerator方法设置:
JMenuItem对象.setAccelerator(KeyStroke.getKeyStroke(参数1,参数2));
参数1指向快捷键字符。参数2指向控制字符,通常是KeyEvent.CTRL_MASK(Ctrl),KeyEvent.ALT_MASK(Alt)。如:open.setAccelerator(KeyStroke.getKeyStroke('O',KeyEvent.CTRL_MASK));可给“open”菜单项设置快捷键“Ctrl+O”。
Java语言程序设计
菜单项的事件处理当用户选定一个菜单项时,该菜单项将发生ActionEvent事件。关于ActionEvent事件的处理,重申三要点:(1)安装侦听器(implementsActionListener)(2)通过addActionListener方法设置侦听(3)重写方法actionPerformed实现事件处理
“JavaEditor”项目的界面更新
“JavaEditor”项目,更新其界面。界面设计新的界面将按钮的功能集合到菜单栏中。
界面元素
?菜单,集合了所有的功能。?嵌入滚动面板的多行文本框,用于文本显示和编辑。
项目功能汇总
FileEditConfigHelp
“Edit”对文本区域操作,可以实现:复制、剪切、粘贴以及全选。
“Help”?“About”将弹出About窗口。参考界面如图所示。
界面程序实现importjava.awt.*;
Java语言程序设计
importjava.awt.event.*;importjavax.swing.*;classNewEditorextendsJFrame{JMenuBarmnb;JMenufile,edit,config,help;JMenuItemNew,open,save,exit;JMenuItemcopy,cut,paste,selectall;JMenuItemfc,bc,dc;JMenuItemabout;JTextAreat;NewEditor(){super("JavaEditor");setDefaultCloseOperation(3);editInit();this.add(newJScrollPane(t));this.setJMenuBar(mnb);this.setBounds(200,200,600,400);this.setVisible(true);}privatevoideditInit(){t=newJTextArea();t.setLineWrap(true);file=newJMenu("File");file.setMnemonic('F');New=newJMenuItem("New");open=newJMenuItem("Open");save=newJMenuItem("Save");exit=newJMenuItem("Exit");file.add(New);file.add(open);file.addSeparator();file.add(save);file.addSeparator();file.add(exit);edit=newJMenu("Edit");edit.setMnemonic('E');copy=newJMenuItem("Copy");paste=newJMenuItem("Paste");cut=newJMenuItem("Cut");