第19讲JavaGUI菜单和工具栏.ppt

上传人:本田雅阁 文档编号:3500272 上传时间:2019-09-04 格式:PPT 页数:27 大小:557.05KB
返回 下载 相关 举报
第19讲JavaGUI菜单和工具栏.ppt_第1页
第1页 / 共27页
第19讲JavaGUI菜单和工具栏.ppt_第2页
第2页 / 共27页
第19讲JavaGUI菜单和工具栏.ppt_第3页
第3页 / 共27页
第19讲JavaGUI菜单和工具栏.ppt_第4页
第4页 / 共27页
第19讲JavaGUI菜单和工具栏.ppt_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《第19讲JavaGUI菜单和工具栏.ppt》由会员分享,可在线阅读,更多相关《第19讲JavaGUI菜单和工具栏.ppt(27页珍藏版)》请在三一文库上搜索。

1、第十九Java GUI编程高级,本讲主要内容: 给GUI应用程序添加菜单 “Java Editor”项目的界面更新 为组件定制弹出式菜单 给GUI应用程序添加工具栏,一、给GUI应用程序添加菜单,菜单概述,菜单的作用:给应用程序设置操作菜单。 菜单组成 JMenuItem-菜单项,直接指向一个具体的操作 JMenu-菜单,其中可加入菜单项(JMenuItem)和菜单(Jmenu) JMenuBar-菜单栏,在其中可以加入菜单(JMenu),菜单的创建和组织,菜单的创建 JMenu、JMenuBar和JMenuItem类的构造方法见表: 如创建一个“File”菜单:JMenu file = ne

2、w JMenu(“File“);,菜单的创建和组织(续),菜单的组织 菜单栏可象别的组件一样添加到应用程序窗口。 JFrame窗口加入菜单栏的方法: public void setJMenuBar(JMenuBar menubar) JMenuBar加入JMenu的方法: public JMenu add(JMenu c) JMenu中加入JMenu、JMenuItem、分隔线的方法: public JMenuItem add(JMenuItem menuItem) public void addSeparator() 说明:因JMenu是JMenuItem的子类,故add(JMenuItem

3、 menuItem)也可加入JMenu菜单。 如:file.add(new JMenuItem(“New“); file.addSeparator();,菜单的创建和组织(续),快捷键设置 JMenu的快捷键通常是Alt + 字符键的组合,可用setMnemonic方法设置: JMenu对象.setMnemonic(int mnemonic); JMenuItem的快捷键可以是Ctrl + 字符键或Alt + 字符键的组合,可用setAccelerator方法设置: JMenuItem对象.setAccelerator(KeyStroke.getKeyStroke(参数1,参数2); 参数1指

4、向快捷键字符。参数2指向控制字符,通常是KeyEvent. CTRL_MASK(Ctrl),KeyEvent.ALT_MASK(Alt)。 如:open.setAccelerator(KeyStroke.getKeyStroke(O, KeyEvent.CTRL_MASK); 可给“open”菜单项设置快捷键“Ctrl + O”。,菜单项的事件处理,当用户选定一个菜单项时,该菜单项将发生ActionEvent事件。关于ActionEvent事件的处理,重申三要点: (1) 安装侦听器 (implements ActionListener) (2) 通过addActionListener方法设置

5、侦听 (3) 重写方法actionPerformed实现事件处理,二、“Java Editor”项目的界面更新,界面设计,新的界面将按钮的功能集合到菜单栏中。 界面元素 菜单,集合了所有的功能。 嵌入滚动面板的多行文本框,用于文本显示和编辑。,界面设计(续),“Edit”对文本区域操作,可以实现:复制、剪切、粘贴以及全选。 “Help”“About”将弹出About窗口。参考界面如图所示。,程序实现: import java.awt.*; import java.awt.event.*; import javax.swing.*; class NewEditor extends JFrame

6、JMenuBar mnb; /菜单栏 JMenu file,edit,config,help; /各菜单 JMenuItem New,open,save,exit; /File下的菜单项 JMenuItem copy,cut,paste,selectall; /Edit下的菜单项 JMenuItem fc,bc,dc; /Config下的菜单项 JMenuItem about; /Help下的菜单项 JTextArea t; NewEditor() super(“Java Editor“); setDefaultCloseOperation(3); editInit(); this.add(n

7、ew JScrollPane(t); this.setJMenuBar(mnb); this.setBounds(200,200,600,400); this.setVisible(true); ,private void editInit() t = new JTextArea(); t.setLineWrap(true); file = new JMenu(“File“); file.setMnemonic(F); New = new JMenuItem(“New“); open = new JMenuItem(“Open“); save = new JMenuItem(“Save“);

8、exit = new JMenuItem(“Exit“); file.add(New); file.add(open); file.addSeparator(); file.add(save); file.addSeparator(); file.add(exit); edit = new JMenu(“Edit“); edit.setMnemonic(E); copy = new JMenuItem(“Copy“); paste = new JMenuItem(“Paste“); cut = new JMenuItem(“Cut“);,edit.add(cut);edit.add(copy)

9、; edit.add(paste); edit.addSeparator(); edit.add(selectall); config = new JMenu(“Config“); config.setMnemonic(C); bc = new JMenuItem(“Back Color“); fc = new JMenuItem(“Fore Color“); dc = new JMenuItem(“Default Color“); config.add(fc); config.add(bc); config.addSeparator(); config.add(dc); help = new

10、 JMenu(“Help“); help.setMnemonic(H); about = new JMenuItem(“About“); help.add(about); mnb = new JMenuBar(); mnb.add(file);mnb.add(edit); mnb.add(config);mnb.add(help); public static void main(String args) new NewEditor(); ,三、 为组件定制弹出式菜单,问题的提出,为“Java Editor”程序的文本编辑区域定制如图所示的的弹出式菜单。 菜单中有五个菜单项组成,分别指示了不同

11、的字体风格,可通过菜单项的选择实现文本区域中文本字体和字号的改变。,用JPopupMenu类建立弹出式菜单,建立弹出式菜单 预先定义一个继承JPopupMenu类的子类,弹出式菜单施加给的对象应由构造方法中的参数接收。本例应是负责文本编辑的多行文本框。 JPopupMenu类的add方法允许向菜单中加入菜单项。弹出式菜单项的激活事件是ActionEvent,可依照多按钮的事件处理方法进行事件处理。,字体风格弹出式菜单的实现: import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.

12、border.BevelBorder; class FontPopup extends JPopupMenu implements ActionListener String item; Font font; JMenuItem mt; JTextArea t; FontPopup(JTextArea t) this.t = t; this.setBorder(new BevelBorder(BevelBorder.RAISED); /设置立体边框 item = new String“标准仿宋“,“粗放行楷“,“规矩新魏“,“精致宋体“,“灵感隶书“; font = new Font new

13、Font(“仿宋“,0,18), new Font(“华文行楷“,0,30), new Font(“华文新魏“,0,22), new Font(“宋体“,0,14), new Font(“隶书“,0,20) ; for(int i=0; iitem.length; i+) mt = new JMenuItem(itemi); mt.setFont(new Font(“仿宋“,0,14); this.add(mt); mt.addActionListener(this); ,public void actionPerformed(ActionEvent e) String s = e.getAc

14、tionCommand(); int i; for( i = 0; iitem.length; i +) if(s.equals(itemi)break; t.setFont(fonti); ,用JPopupMenu类建立弹出式菜单,为多行文本框定制弹出式菜单 让以上的弹出式菜单对文本框真实可用,就需要对文本框设置事件侦听。可通过MouseEvent的getButton()方法判断用户按下了哪个鼠标键: MouseEvent.BUTTON1左键 MouseEvent.BUTTON2中间键 MouseEvent.BUTTON3右键,多行文本框带弹出式菜单的实现: import java.awt.

15、event.*; import javax.swing.*; class JTextAreaWithMenu extends JTextArea implements MouseListener FontPopup fp ; JTextAreaWithMenu(int r,int c) super(r,c); fp = new FontPopup(this); this.addMouseListener(this); this.add(fp); public void mousePressed(MouseEvent e) if(e.getButton()=e.BUTTON3) fp.show(

16、this,e.getX(),e.getY(); public void mouseClicked(MouseEvent e) public void mouseEntered(MouseEvent e) public void mouseExited(MouseEvent e) public void mouseReleased(MouseEvent e) ,四、 给GUI应用程序添加工具栏,问题提出,继续对“Java Editor”项目进行更新,再为界面添加如图所示的工具栏。 工具栏上流式顺序排放了七个工具按钮,作用分别是:新建文件、打开文件、保存文件、复制、剪切、粘贴、帮助。,工具栏界面设

17、计,步骤 创建工具栏对象 将组件加入到工具栏 将工具栏加入到应用程序窗口,工具栏界面设计(续),创建工具栏对象 工具栏用JToolBar类及其子类创建,它是一个容器组件,在工具栏组件中可以容放其他组件。 JToolBar的构造方法: public JToolBar():默认方向为水平( HORIZONTAL)。 public JToolBar(int orientation):指定方向,参数可选 HORIZONTAL 或 VERTICAL,后者为竖式工具栏。 public JToolBar(String name):指定标题,标题浮动时可见。默认的方向为 HORIZONTAL。,工具栏界面设计

18、(续),将组件加入到工具栏 工具栏设置布局:setLayout方法,默认FlowLayout流式排放。 工具栏添加组件:add方法向。也可通过“addSeparator()”方法在工具栏中加入分隔,以对工具按钮按功能分组。 将工具栏加入到应用程序窗口 JFrame类的add方法,可将工具栏加入进应用程序窗口,同时确定停放位置。 如: this.add(toolBar,“North“); /加入工具栏并停靠在上边,import java.awt.*; import java.awt.event.*; import java.io.*; import javax.swing.*; class Ed

19、itorToolBar extends JToolBar EditorToolBar(JTextArea t) super(“Toolbar for Java Editor“); String imgFile = “new.jpg“, “open.jpg“,“save.jpg“, “copy.jpg“,“cut.jpg“,“paste.jpg“,“help.jpg“; ImageIcon toolImage = new ImageIconimgFile.length; JButton tb = new JButtonimgFile.length; for(int i = 0; i imgFile.length; i+) toolImagei = new ImageIcon(“graphics“+imgFilei); tbi = new JButton(toolImagei); if(i=3 | i=6)this.addSeparator(); this.add(tbi); ,练习,练习:对以上工具栏上的按钮进行事件处理,并将工具栏加入到“Java Editor”项目中。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1