欢迎来到天天文库
浏览记录
ID:45849198
大小:194.50 KB
页数:49页
时间:2019-11-18
《Java GUI编程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第7章GUI编程教学目标图形用户界面(GUI)是程序的一种图示界面。优秀的GUI通过给程序提供一致的外观和直观的控件(例如按钮、滑动块、下拉列表和菜单等),使得程序使用起来非常容易。JavaAPI包含两种不同类型的图形用户界面,“老的GUI”通常称为抽象窗口工具包(AWT)GUI,它是在JavaSDK1.0中引入的。“新的GUI”称为SwingGUI,从Java2开始,它已成为标准JavaSDK的一部分。SwingGUI都是在较老的AWTGUI类基础上构建的类。它相对于AWTGUI来说,速度更快、更具有灵活性。本章将介绍GUI程序的组成和工作原理、AWT包和事
2、件模型、常用的AWT包中的容器组件和控件组件以及布局管理器,最后介绍Swing包中常用的组件类。教学重点GUI概述Java委托事件模型及常用事件布局管理器AWT包和Swing包中的基本组件AWT包和Swing包中的高级组件GUIGUI概述创建GUI程序AWT包GUI概述GUI向用户提供了易于交互的工作界面,它包含了按钮、下拉列表、菜单、文本字段等图形元素,对于用户来说,这些都是易于识别和操作的,因此用户能够将注意力集中于应用程序的功能上,而不用在执行操作的技巧上花费精力。但是,对于程序员来说,开发基于GUI的程序却较困难,因为一个基于GUI的程序必须随时准备处
3、理所有GUI元素上发生的行为,即事件。用于处理事件的程序称为事件处理程序。用Java语言开发一个GUI程序,需要用到组件、容器、布局管理器和事件处理程序4种基本元素。创建GUI程序创建一个GUI程序的基本步骤如下:(1)创建一个容纳GUI组件的容器类。例如,创建JPanel类的子类作为基本容器。(2)如果一个容器不使用默认的布局管理器,则为它选择一个新的布局管理器。(3)创建组件,并将它们添加到容器中。(4)创建一些“侦听者”对象,检测并响应每一个GUI组件所被期望的事件。并向对应的组件注册这些侦听者。AWT包AWT(AbstractWindowToolkit
4、)是Java专门用来设计“图形用户界面(GUI)”和“绘制2D”的包。java.awt包是java基本包中最大的一个包,其中定义了所有GUI组件类,例如,按钮、菜单、列表、文本框等,以及其他用于构造图形用户界面的类,如字体类Font、绘图类Graphics和图像类Image等Java事件事件处理模型鼠标和键盘事件窗口事件事件处理模型事件处理由3个组成部分:事件源、事件对象和事件监听者。Java的事件处理机制中引入了委托事件模型,不同的事件由不同的监听器处理,如图所示的是ActionEvent事件的处理模型。鼠标和键盘事件鼠标事件类MouseEvent和键盘事件
5、类KeyEvent都是InputEvent类的子类,InputEvent类不包含任何具体的事件,但是调用InputEvent类的getModifiers()方法,并把返回值与InputEvent类的几个静态整型常量ALT_MASK,CTRL_MASK,SHIFT_MASK,META_MASK,BUTTON1_MASK,BUTTON2_MASK,BUTTON3_MASK相比较,就可以得知用户在引发KeyEvent事件时是否同时按下了功能键,或者用户单击鼠标时所单击的是左键还是右键。KeyEvent类中比较常用的两个方法是getKeyChar()和getKeyTe
6、xt()窗口事件只有java.awt.Window及其扩展类(例如Frame、Dialog等)才能引发窗口事件。窗口事件表示窗口处于激活/无效状态、图标/非图标状态、打开/关闭状态或者正在关闭过程中。WindowEvent类最重要的方法是getWindow(),此方法返回引发当前WindowEvent事件的具体窗口,与getSource()方法返回的是相同的事件引用。但是,getSource()的返回类型为Object,而getWindow()返回的是具体的Window对象。容器组件Container类PanelFrameDialogScrollPane类Co
7、ntainer类Container类是所有容器类的父类,该类是一个抽象类,包含了所有容器组件都必须具有的方法和功能,其中比较常用的方法如表所示。方法功能描述add()将组件加入到当前容器中,每个被加入容器的组件按添加顺序获得一个序号getComponent(intindex)获取指定序号的组件。getComponent(intx,inty)获取指定坐标(x,y)处的组件。remove(Component)将指定的组件移除remove(intindex)将指定序号的组件移除removeAll()将容器中所有的组件移除setLayout()设置容器的布局管理器va
8、lidate()验证此容器及其所有子组
此文档下载收益归作者所有