Java程序设计(第3版)课件 -单元4-任务5 字体设置菜单设计_第1页
Java程序设计(第3版)课件 -单元4-任务5 字体设置菜单设计_第2页
Java程序设计(第3版)课件 -单元4-任务5 字体设置菜单设计_第3页
Java程序设计(第3版)课件 -单元4-任务5 字体设置菜单设计_第4页
Java程序设计(第3版)课件 -单元4-任务5 字体设置菜单设计_第5页
已阅读5页,还剩33页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

任务五字体设置菜单设计单元四:图形用户界面程序设计教学目标知识目标菜单栏;下拉式菜单;弹出式菜单;鼠标事件。能力目标能会使用JMenuBar、JMenu和JMenuItem构造应用程序菜单;能会使用JPopupMenu构造应用程序弹出式菜单;能会处理鼠标事件。教学内容4任务陈述123知识准备任务实施任务拓展任务实训5 1.任务陈述任务描述本次任务是设计一个带有菜单的图形用户界面程序,使用级联菜单控制文字的字体和颜色,运行结果如下图所示

2.知识准备真正的GUI应用程序缺少不了菜单,它可以给用户提供简明清晰的信息,让用户从多个项目中进行选择,又可以节省界面空间。位于窗口顶部的菜单栏和其子菜单一般会包括一个应用程序的所有方法和功能,是比较重要的组件 2.知识准备下拉式菜单一个完整的菜单系统包括:菜单栏JMenuBar,装配到菜单栏上的菜单JMenu,菜单上的菜单项JMenuItem。菜单项的作用与按钮相似,用户点击时引发一个ActionEvent使用菜单栏的程序必须是JFrame的子类JMenuBar是整个下拉式菜单的根,是JMenu的容器。在一个时刻,一个主窗口可以显示一个菜单栏。可以根据程序的需要切换菜单栏,这样在不同的时刻就可以显示不同的菜单 2.知识准备下拉式菜单JMenu提供了一个基本的下拉式菜单,可以包含若干JMenuItem。JMenu需要添加到JMenuBar上。JMenuItem是菜单树的“叶”结点,菜单子项组件需要添加到菜单项。一个菜单子项(JmenuItem)的标题是一个字符串,可以使用菜单项JMenu类的addSeperator()方法添加水平分割线 2.知识准备下拉式菜单JCheckboxMenuItem类用于创建复选菜单项。当选中复选框菜单子项时,在该菜单子项左边出现一个选择标记,如果再次选中该项,则该选项左边的选择标记就会消失JRadioButtonMenuItem类用于创建带有单选菜单项,属于一组菜单项中的一项,该组中只能选择一个项,被选择的项显示其选择状态,选择此项的同时,其他任何以前被选择的项都切换到未选择的状态 2.知识准备下拉式菜单在程序中使用菜单的基本过程是:首先创建一个菜单栏(JMenuBar);其次创建若干菜单项(JMenu),并把它们添加到(JMenuBar)中;再次,创建若干个菜单子项(JMenuItem),或者创建若干个带有复选框的菜单子项(JCheckboxMenuItem),并把它们分类别地添加到每个JMenu中;最后,通过JFrame类的setJMenuBar()方法,将菜单栏JMenuBar添加到框架上,使之能够显示 2.知识准备(表21-1)方法名方法功能JMenuBar()构造新菜单栏JMenuBarJMenugetMenu(intindex)返回菜单栏中指定位置的菜单intgetMenuCount()返回菜单栏上的菜单数voidpaintBorder(Graphicsg)如果BorderPainted属性为true,则绘制菜单栏的边框voidsetBorderPainted(booleanb)设置是否应该绘制边框voidsetHelpMenu(JMenumenu)设置用户选择菜单栏中的“帮助”选项时显示的帮助菜单voidsetMargin(Insetsm)设置菜单栏的边框与其菜单之间的空白voidsetSelected(Componentsel)设置当前选择的组件,更改选择模型 2.知识准备方法名方法功能JMenu()构造没有文本的新JMenuJMenu(Actiona)构造一个从提供的Action获取其属性的菜单JMenu(Strings)构造一个新JMenu,用提供的字符串作为其文本JMenu(Strings,booleanb)构造一个新JMenu,用提供的字符串作为其文本并指定其是否为分离式(tear-off)菜单voidadd()将组件或菜单项追加到此菜单的末尾voidaddMenuListener(MenuListenerl)添加菜单事件的侦听器voidaddSeparator()将新分隔符追加到菜单的末尾voiddoClick(intpressTime)以编程方式执行“单击”JMenuItemgetItem(intpos)返回指定位置的JMenuItemvoidsetMenuLocation(intx,inty)设置弹出组件的位置 2.知识准备方法名方法功能intgetItemCount()返回菜单上的项数,包括分隔符JMenuIteminsert(Actiona,intpos)在给定位置插入连接到指定Action对象的新菜单项JMenuIteminsert(JMenuItemmi,intpos)在给定位置插入指定的JMenuitemvoidinsert(Strings,intpos)在给定的位置插入一个具有指定文本的新菜单项voidinsertSeparator(intindex)在指定的位置插入分隔符booleanisSelected()如果菜单是当前选择的(即突出显示的)菜单,则返回truevoidremove()从此菜单移除组件或菜单项voidremoveAll()从此菜单移除所有菜单项voidsetDelay(intd)设置菜单的PopupMenu向上或向下弹出前建议的延迟voidsetMenuLocation(intx,inty)设置弹出组件的位置

2.知识准备方法名方法功能JMenuItem()创建不带有设置文本或图标的JMenuItemJMenuItem(Actiona)创建一个从指定的Action获取其属性的菜单项JMenuItem(Iconicon)创建带有指定图标的JMenuItemJMenuItem(Stringtext)创建带有指定文本的JMenuItemJMenuItem(Stringtext,Iconicon)创建带有指定文本和图标的JMenuItemJMenuItem(Stringtext,intmnemonic)创建带有指定文本和键盘助记符的JMenuItembooleanisArmed()返回菜单项是否被“调出”voidsetArmed(booleanb)将菜单项标识为“调出”voidsetEnabled(booleanb)启用或禁用菜单项voidsetAccelerator(KeyStrokekeystroke)设置菜单项的快捷键voidsetMnemonic(charmnemonic)设置菜单项的热键KeyStrokegetAccelerator()返回菜单项的快捷键 2.知识准备方法名方法功能JCheckBoxMenuItem()创建一个不带有设置文本或图标的复选菜单项JCheckBoxMenuItem(Stringtext)创建一个有指定文本的复选菜单项JCheckBoxMenuItem(Iconicon)创建一个带有指定图标的复选菜单项JChcckBoxMenuItem(Stringtext,Iconicon)创建一个有文本和图标的复选菜单项JCheckBoxMenulte(Stringtext,Booleanb)创建一个有文本和设置选择状态复选菜单项JChcckBoxMenuItem(Stringtext,Iconicon,Booleanb)创建一个有文本、图标和设置选择状态的复选菜单项BooleangetState()返回菜单项的选定状态voidsetState(Booleanb)设置该项的选定状态

2.知识准备方法名方法功能JRadioButtonMenuItem()创建一个新的单选菜单项JRadioButtonMenuItem(Stringtext)创建一个有指定文本的单选菜单项JRadioButtonMenuItem(Iconicon)创建一个带有指定图标的单选菜单项JRadioButtonMenuItem(Stringtext,Iconicon)创建一个有文本和图标的单选菜单项JRadioButtonMenulte(Stringtext,Booleanselected)创建一个有文本和设置选择状态的单选菜单项JRadioButtonMenuItem(Iconicon,Booleanselected)创建一个有图标和设置选择状态的单选菜单项JRadioButtonMenuItem(Stringtext,Iconicon,Booleanselected)创建一个有文本、图标和设置选择状态的单选菜单项 3.任务实施实施思路与方案:任务四中已经讲述了如何设置字体,本任务中通过菜单来选择字体。通过JMenuBar实现菜单栏,JMenu实现菜单,JMenuItem实现菜单项,JCheckBoxMenuItem实现带复选按钮的菜单项,addSeparator方法添加水平分割线,setMnemonic方法添加菜单的快捷键 3.任务实施解决步骤:1)定义一个MenuTest菜单类,继承自窗体类JFrame,并实现ActionListener接口2)定义MenuTest构造方法,首先通过JMenuBar建立一个菜单栏,然后使用JMenu建立菜单,每个菜单再通过JMenuItem建立菜单项3)定义actionPerformed单击菜单项处理方法做相应处理

3.任务实施导入相关包importjavax.swing.*;importjava.awt.event.*;importjava.awt.*;声明主窗口类publicclassMenuTestextendsJFrameimplementsActionListener{} 3.任务实施声明和创建菜单栏、菜单和菜单项对象:

JMenuBarjmb=newJMenuBar(); JMenufontMenu=newJMenu("字体(F)"); JMenuhelpMenu=newJMenu("帮助"); JMenustyleMenu=newJMenu("样式"); JMenucolorMenu=newJMenu("颜色"); JMenuItemexitMenu=newJMenuItem("退出"); JMenuItemaboutMenu=newJMenuItem("关于"); 3.任务实施菜单项、文本区域对象声明创建JCheckBoxMenuItemboldMenu=newJCheckBoxMenuItem("粗体(B)");JCheckBoxMenuItemitalicMenu=newJCheckBoxMenuItem("斜体"); JMenuItemredMenu=newJMenuItem("红色"); JMenuItemgreenMenu=newJMenuItem("绿色"); JMenuItemblueMenu=newJMenuItem("蓝色"); JTextAreatxtDemo=newJTextArea("示例文字"); intbold,italic;//用于记录粗体、斜体选择的变量 3.任务实施构造方法MenuTest的内容:

setJMenuBar(jmb); //设置窗口菜单栏 jmb.add(fontMenu); //往菜单栏添加菜单 jmb.add(helpMenu);//往菜单栏添加菜单 //设置菜单快捷键 fontMenu.setMnemonic(KeyEvent.VK_F); boldMenu.setMnemonic(KeyEvent.VK_B); 3.任务实施构造方法MenuTest的内容: fontMenu.add(styleMenu);//添加菜单项到菜单 fontMenu.add(colorMenu); fontMenu.addSeparator();//添加水平分割线

fontMenu.add(exitMenu); fontMenu.add(aboutMenu); styleMenu.add(boldMenu); styleMenu.add(italicMenu);

3.任务实施构造方法MenuTest的内容: colorMenu.add(redMenu);//添加菜单项到菜单 colorMenu.add(greenMenu); colorMenu.add(blueMenu); //为菜单项添加事件监听器 exitMenu.addActionListener(this); aboutMenu.addActionListener(this); 3.任务实施构造方法MenuTest的内容: //为菜单项添加事件监听器

boldMenu.addActionListener(this); italicMenu.addActionListener(this);

redMenu.addActionListener(this); greenMenu.addActionListener(this); blueMenu.addActionListener(this); 3.任务实施构造方法MenuTest的内容://文本区添加到窗口getContentPane().add(txtDemo);//设置窗口标题、大小等

setTitle("菜单控制字体和颜色");setSize(350,250);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

3.任务实施actionPerformed方法内容:

//设置文本区域前景色 Stringcmd=e.getActionCommand(); if(cmd.equals("红色")) txtDemo.setForeground(Color.RED); elseif(cmd.equals("绿色")) txtDemo.setForeground(Color.GREEN); elseif(cmd.equals("蓝色")) txtDemo.setForeground(Color.BLUE); 3.任务实施actionPerformed方法内容:elseif(cmd.equals("粗体")) bold=boldMenu.isSelected()?Font.BOLD:Font.PLAIN;elseif(cmd.equals("斜体")) italic=italicMenu.isSelected()?Font.ITALIC:Font.PLAIN;elseif(cmd.equals("退出")) System.exit(0); txtDemo.setFont(newFont("Serif",bold+italic,24));

3.任务实施main

方法内容,创建窗口对象: publicstaticvoidmain(String[]args){ MenuTesttm=newMenuTest(); }

4.任务拓展弹出式菜单弹出式菜单(JPopupMenu),也称快捷菜单,它可以附加在任何组件上使用。当在附有快捷菜单的组件上单击鼠标右键时,即显示出快捷菜单弹出式菜单的结构与下拉式菜单中的菜单项JMenu类似,一个弹出式菜单包含有若干个菜单子项JMenuItem。只是,这些菜单子项不是装配到JMenu中,而是装配到JPopupMenu中方法show(Componentorigin,int,inty)用于在相对于组件的x、y位置显示弹出式菜单 4.任务拓展弹出式菜单菜单与其他组件有一个重要的不同:不能将菜单添加到一般的容器中,而且不能使用布局管理器对它们进行布局。弹出式菜单因为可以以浮动窗口形式出现,因此也不需要布局不论是弹出式菜单还是下拉式菜单,仅在其某个菜单子项(JMenuItem类或JCheckboxMenuItem类)被选中时才会产生事件 4.任务拓展弹出式菜单当一个JMenuItem类菜单子项被选中时,产生ActionEvent事件对象;当一个JCheckboxMenuItem类菜单子项被选中或被取消选中时,产生ItemEvent事件对象。ActionEvent事件、ItemEvent事件分别由ActionListener接口和ItemListener接口来监听处理。当菜单中既有JMenuItem类的菜单子项,又有JCheckboxMenuItem类的菜单子项时,必须同时实现ActionListener接口和ItemListener接口,才能处理菜单上的事件 4.任务拓展方法名方法功能JPopupMenu()构造一个不带“调用者”的JPopupMenuJPopupMenu(Strings)构造一个具有指定标题的JPopupMenubooleanisVisible()如果弹出菜单可见(当前显示的),则返回trueStringgetLabel()返回弹出菜单的标签voidinsert(Componentcomponent,int_index)将指定组件插入到菜单的给定位置voidpack()布置容器,让它使用显示其内容所需的最小空间voidsetLocation(intx,inty)使用X、Y坐标设置弹出菜单的左上角的位置voidsetPopupSize(Dimensiond)使用Dimension对象设置弹出窗口的大小voidsetPopupSize(intwidth,intheight)将弹出窗口的大小设置为指定的宽度和高度voidsetVisible(booleanb)设置弹出菜单的可见性voidshow(Componentinvoker,intx,inty)在组件调用者的坐标空间中的位置X、Y显示弹出菜单

4.任务拓展鼠标事件处理(MouseEvent)对应两个接口:MouseListener和MouseMotionListenerMouseListener共有五个方法mousePressed(MouseEvente)处理按下鼠标左键mouseClicked(MouseEvente)处理鼠标单击mouseReleased(MouseEvente)处理鼠标按键释放mouseEntered(MouseEvente)处理鼠标进入当前窗口mouseExited(MouseEvente)处理鼠标离开当前窗口 4.任务拓展MouseMotionListener有两个方法mou

温馨提示

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

评论

0/150

提交评论