《任务22 主程序设计.ppt》由会员分享,可在线阅读,更多相关《任务22 主程序设计.ppt(24页珍藏版)》请在三一办公上搜索。
1、任务22 主程序设计,教学目标任务,教学目标,掌握容器概念掌握框架的使用方法了解菜单条、菜单、菜单项的基本概念理解菜单条、菜单、菜单项的关系掌握菜单组件的使用方法和事件处理机制,任务,Swing框架(JFame)的基本概念Swing框架(JFame)的使用Swing菜单简介菜单的设计与实现,1.Swing框架(JFrame)Jframe简介,Java中的顶层窗口(即那些没有包含在其他窗口中的窗口)被称作框架。框架是一种容器,允许你把其他组件添加到它里面,把它们组织起来,呈现给用户。前面的课程介绍了Swing中一些常用控件,这些控件并不能孤立存在,而是必须加到像JFrame这样的“容器”中。在J
2、ava中,用来存放控件的组件被称之为容器。,1.Swing框架(JFrame)Jframe的构造方法,JFrame()创建无标题窗口。JFrame(String s)创建标题名字是字符串s的窗口。,1.Swing框架(JFrame)JFrame的常用方法,setTitle(String title)设置JFrame标题文本get/setSize():获取/设置JFrame的大小。add(Object a):将组件添加到JFrame中。dispose()关闭JFrame并回收用于创建窗口的任何资源。setVisible(boolean b)设置JFrame的可见性。setLocation(x,y
3、)设置JFrame在屏幕的位置。,1.Swing框架(JFrame)JFrame的常用属性,title:String型,设置JFrame标题中的文本 alwayOnTop:布尔型,设置JFrame是否位于最顶部。resizable:布尔型,设置是否可以改变JFrame大小。,1.Swing框架(JFrame)JFrame的事件与事件处理,事件类型是:WindowEvent 接口名字:WindowEventListener 窗口事件总共有7种:windowActivated();窗口被激活。windowDeactivated();窗口失活(其他窗口激活)。windowClosed();窗口已被关
4、闭。windowClosing();窗口正被关闭。windowOpened();窗口已被打开。windowIconified();窗口被最小化为图标。windowDeiconified();窗口由图标恢复。,Swing框架(JFame)的使用 窗口事件实例,窗口事件发生顺序:1.窗口打开windowActivated()被调用 windowOpened()被调用2.窗口关闭windowClosing()被调用 windowDeactivated()被调用windowClosed()被调用3.窗口最小化windowIconified()被调用 windowDeactivated()被调用4.窗口
5、恢复windowDeiconified()被调用 windowActivated()被调用,实例 WindowEventDemo.java,Swing框架(JFame)的使用 适配器实例,在例WindowEventDemo.java里的7个窗口事件并不总是全部使用,有时候只使用其中几个事件,这时如何处理?使用的是WindowAdapter类,不使用的事件就不需要写出来了,就可以解以上提出的问题。适配器是一个类而不是接口,因而处理事件的类只能继承一个适配器。当该类需要处理多种事件时,通过继承适配器类的方式是不行的。但可以基于适配器类,用内嵌类(Inner Class)的方法来处理这种情况。,一个
6、使用WindowAdapter类的窗口事件例子,源程序(WindowAdapterDemo.java)请注意:本例使用的是WindowAdapter类,没有使用的3个窗口事件就不需要写出来。这里使用的是extends关键字,class WinLis extends WindowAdapter(继承WindowAdapter类),WinLis 类是一个内部类。,2.Swing框架(JFame)的使用给框架定位-显示在屏幕中央,调用Toolkit类的静态方法getDefaultToolkit()得到一个Toolkit对象。如:Toolkit kit=Toolkit.getDefaultToolki
7、t();然后调用getScreenSize()方法把屏幕尺寸作为一个Dimension对象返回。如:Dimension screenSize=kit.getScreenSize();Dimension对象screenSize使用公有的实例变量with和height存储高和宽。如:int screenHeight=screenSize.height;int screenWidth=screenSize.width;显示在屏幕中央 setSize(screenWidth/2,screenHeight/2);setLocation(screenWidth/4,screenHeight/4);,实例
8、CenteredFrameTest.java,2.Swing框架(JFame)的使用 可视化实例,例22-1框架的使用。(DemoJFrame.java)演示创建过程,一、Swing菜单简介,1、菜单的组成 1)菜单条(JMenuBar)2)菜单(JMenu)3)菜单项,一、Swing菜单简介,2、菜单条(JMenuBar)用来创建一个水平菜单栏,它是菜单和菜单项的容器。3、菜单(JMenu)可以连接到JMenuBar或者其他JMenu对象上的菜单。1)顶层菜单:直接添加到JMenuBar上的菜单。2)子菜单:连接到其他JMenu对象上的菜单。,一、Swing菜单简介,4、菜单项 Swing菜
9、单中最小的单位。根据用途不同,菜单项可以分成:1)一般菜单项(JMenuItem):用来执行某项操作或激活对话框。2)单选菜单项(JRadioButtonMenuItem):实现单选按钮功能的菜单项。3)复选菜单项(JCheckBoxMenuItem):实现复选按钮功能的菜单项。,一、Swing菜单简介,5、菜单各个组成成分关系示意图,JMenuBar,顶层菜单1(JMenu),顶层菜单2(JMenu),顶层菜单n(JMenu),菜单项1,菜单项n,菜单项1,子菜单(JMenu),菜单项1,菜单项n,菜单项n,1、具体要求1)通过对【编辑(E)】菜单中菜单项的操作,可以分别实现对班级和姓名标签
10、字体颜色的设置。2)通过对【文件(F)】菜单中菜单项的操作,可以分别实现还原班级标签和姓名标签字体颜色为黑色,以及退出程序的功能。3)通过对【显示(S)】菜单中菜单项的操作,可以分别实现是否显示班级或姓名标签的功能。,二、菜单的设计与实现【例23.1】在NetBeans中使用菜单和JLabel组件设计一个可以改变班级和姓名标签字体颜色的图形用户界面程序。,JFrmMenu.java,2、实现步骤,1)准备阶段和界面设计Part1 见实验指导书(一)准备工作 和(二)界面设计1、2、3)内容:添加JLabel、JMenuBar和JButtonGroup组件,设计【文件】菜单外观(mnemonic
11、属性),2)界面设计Part2:(见实验指导书(二)界面设计4)内容:设计【编辑】菜单外观(buttonGroup属性、accelerator属性),3)界面设计Part3(见实验指导书(二)界面设计5)内容:设计【显示】菜单外观(selected属性),4)添加事件处理代码(见实验指导书(三)添加事件处理代码)内容;实现【文件】菜单、【编辑】菜单和【显示】菜单功能(引用类,actionPerformed和itemStateChanged方法),菜单外观设计,2、设计和实现菜单功能的步骤。,1、添加JMenuBar到窗体上。2、根据需要添加若干个顶层菜单(JMenu)到JMenuBar上。3、
12、设置JMenu的相关属性。4、根据需要添加若干个菜单项或子菜单到JMenu上。5、设置菜单项或子菜单相关属性。6、为菜单项设置快捷键或加速器。7、为菜单项设置图标。8、添加菜单项的事件处理代码。,作用:菜单项中带有下划线的字母,可以通过Alt+该字母的方式选择该菜单项。设置方法:在菜单项的mnemonic属性 中设置。,作用:可在不打开菜单的情况下选择设置了加速器的菜单项。设置方法:在菜单项的accelerator属性中设置。,3、一般菜单项和单选菜单项的鼠标单击事件处理方法是actionPerformed(),复选菜单项的事件处理方法是itemStateChange()。,例22-2 主程序
13、界面设计,创建如图所示的窗口在窗口上添加一个菜单栏(jMenuBar)在菜单栏中添加三个菜单在三个菜单中分别添加实现相应功能的菜单项菜单项的相应事件处理在后续任务中讲解,作业,实现窗口显示在屏幕中央。setVisible()方法的作用是设置组件是否可见,在窗口上添加一个复选框,使得选中这个复选框时隐藏窗口。实现主窗口调用子窗口的程序,要求:在主窗口添加两个按钮(打开,关闭),当单击“打开”按钮时,显示子窗口;当单击“关闭”按钮时,关闭子窗口,作业,请设计一个与Windows的记事本程序相同的菜单。(注:此处只要求将外观设计出来,不用实现具体功能。)菜单是由哪几个部分组成的?各个组成部分之间的关系是怎样的?如何实现单选菜单项的单选效果?快捷键和加速器的区别是什么?,