9 图形用户界面.ppt
《9 图形用户界面.ppt》由会员分享,可在线阅读,更多相关《9 图形用户界面.ppt(80页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第9章章 图形用户界面(图形用户界面(GUI)n 9.1 Java图形用户界面概述图形用户界面概述n 9.2 用用AWT创建图形用户界面创建图形用户界面n 9.3 AWT组件组件n 9.4 布局管理器布局管理器n 9.5 用用Swing创建图形用户界面创建图形用户界面n 9.6 事件处理机制事件处理机制9.1 Java图形用户界面概述n 顾名思义,图形用户界面(顾名思义,图形用户界面(Graphics User Interface,缩写缩写GUI)是指以图形的显示方式与用户实现交互操是指以图形的显示方式与用户实现交互操作的应用程序界面。作的应用程序界面。Java提供了十分完善的图形用户提供了
2、十分完善的图形用户界面功能,使得软件开发人员可以轻而易举地开发出界面功能,使得软件开发人员可以轻而易举地开发出功能强大、界面友善、安全可靠的应用软件。功能强大、界面友善、安全可靠的应用软件。n 在在Java语言中,有两个包(语言中,有两个包(java.awt和和javax.swing)囊括了实现图形用户界面的所有基本元素,这些基本囊括了实现图形用户界面的所有基本元素,这些基本元素主要包括容器、组件、布局管理器和绘图工具等。元素主要包括容器、组件、布局管理器和绘图工具等。容器是包容组件的部件,组件是与用户实现交互操作容器是包容组件的部件,组件是与用户实现交互操作的部件,布局管理器是管理组件在容器
3、中的布局形式,的部件,布局管理器是管理组件在容器中的布局形式,绘图工具是绘制图形的组件。绘图工具是绘制图形的组件。9.1 Java图形用户界面概述n java.awt是是java1.1用来建立用来建立GUI的图形包,这里的的图形包,这里的“awt”是抽象窗口工具包(是抽象窗口工具包(Abstract Windowing Toolkit)的缩写,其中的组件常被称为的缩写,其中的组件常被称为AWT组件。组件。javax.swing是是Java2提出的提出的AWT的改进包,它主要改的改进包,它主要改善了组件的显示外观,增强了组件的控制能力。善了组件的显示外观,增强了组件的控制能力。9.1 Java图
4、形用户界面概述n 在在Java中,设计用户界面需要经历中,设计用户界面需要经历4个基本步骤:个基本步骤:(1)创建和设置组件)创建和设置组件(2)将组件加入到容器中)将组件加入到容器中(3)布局组件)布局组件(4)处理由组件产生的事件)处理由组件产生的事件 9.1 Java图形用户界面概述9.2 用用AWT创建图形用户界面创建图形用户界面n AWT是抽象窗口工具包,其中涵盖了是抽象窗口工具包,其中涵盖了Java API为开为开发发Java应用程序提供的创建图形用户界面的工具集,应用程序提供的创建图形用户界面的工具集,它包含了用户界面的各种组件、事件处理模型、图形它包含了用户界面的各种组件、事件
5、处理模型、图形和图像处理工具、布局管理器、数据传输、剪切和粘和图像处理工具、布局管理器、数据传输、剪切和粘贴操作等功能,使得在贴操作等功能,使得在Java环境中可以比较轻松地设环境中可以比较轻松地设计出具有良好的用户交互界面的应用程序。计出具有良好的用户交互界面的应用程序。AWT概述 n AWT是是Java基础类库基础类库JFC(Java Foundation Class)的一个重要组成部分,它位于的一个重要组成部分,它位于java.awt包中,包中,其中不仅包含了与显示界面有关的各种组件,还包含其中不仅包含了与显示界面有关的各种组件,还包含了一些子包,主要提供了色彩控制、数据传输、事件了一些
6、子包,主要提供了色彩控制、数据传输、事件处理模型、拖放功能、字体设置、打印管理、图像处处理模型、拖放功能、字体设置、打印管理、图像处理等技术支持。理等技术支持。n AWT使用的是与运行环境相关的组件处理机制。也使用的是与运行环境相关的组件处理机制。也就是说,在应用程序中使用的各种组件需要在运行环就是说,在应用程序中使用的各种组件需要在运行环境中有相应的本地组件与之配合,共同完成其功能。境中有相应的本地组件与之配合,共同完成其功能。AWT组件类结构层次图组件类结构层次图 AWT容器容器(Container)n 容器(容器(Container)是用来放置其他组件的一种特殊组是用来放置其他组件的一种
7、特殊组件,在件,在Java中容器用中容器用Container 类描述,它是类描述,它是Component的一个子类,因此,容器也具有组件的全部的一个子类,因此,容器也具有组件的全部特征,是一种具有特殊作用意义的组件。特征,是一种具有特殊作用意义的组件。Container类的部分方法类的部分方法n int getComponentCount()n Component getComponents()n Component add(Component comp)n void remove(Component comp)n LayoutManager getLayout()n void setLayo
8、ut(LayoutManager mgr)n Dimension getPreferredSize()n Dimension getMinimumSize()n Dimension getMaximumSize()n void paint(Graphics g)容器类的层次结构图容器类的层次结构图 n Panel容器是一种最简单且无边框的容器,又称为面容器是一种最简单且无边框的容器,又称为面板容器。在这种容器中可以放置各种类型的组件,甚板容器。在这种容器中可以放置各种类型的组件,甚至是另外一个至是另外一个Panel容器,所以容器,所以Panel容器可以嵌套地放容器可以嵌套地放置多层。置多层。P
9、anel类提供了两种构造方法,其格式为:类提供了两种构造方法,其格式为:n Panel()n Panel(LayoutManager layout)Panel容器容器n 在在java.awt包中提供了一个包中提供了一个Window 类,这个类描述类,这个类描述了无边框、无菜单栏的顶层窗口容器。由于一般的应用了无边框、无菜单栏的顶层窗口容器。由于一般的应用程序窗口都有边框、标题栏和菜单栏,所以通常使用它程序窗口都有边框、标题栏和菜单栏,所以通常使用它的子类的子类Frame,这个类描述了一个包含边框和标题栏的这个类描述了一个包含边框和标题栏的顶层窗口。顶层窗口。n Frame类提供了四种构造方法的
10、格式:类提供了四种构造方法的格式:n Frame()n Frame(GraphicsConfiguration gc)n Frame(String title)n Frame(String title,GraphicsConfiguration gc)Frame容器容器Frame类的部分成员方法类的部分成员方法 n String getTitle()n void setTitle(String title)n MenuBar getMenuBar()n void setMenuBar(MenuBar mb)n Rectangle getMaximizedBounds()n void setMa
11、ximizedBounds(Rectangle bounds)9.3 AWT组件组件 n 尽管尽管AWT容器也属于组件,但它的主要作用是用来容器也属于组件,但它的主要作用是用来包容其他组件的。下面将讨论一下非容器组件,即那些包容其他组件的。下面将讨论一下非容器组件,即那些必须放置在容器中且相互之间不能嵌套的组件。为了避必须放置在容器中且相互之间不能嵌套的组件。为了避免混淆,在这里我们将前者称为容器,后者称为组件。免混淆,在这里我们将前者称为容器,后者称为组件。n Java提供了大量的组件,它们都是提供了大量的组件,它们都是Component的子类。的子类。尽管每种组件都有其特点和适用场合,但它
12、们的使用过尽管每种组件都有其特点和适用场合,但它们的使用过程都要经历创建组件对象、将组件添加到容器中、设置程都要经历创建组件对象、将组件添加到容器中、设置显示属性、设置事件监听,处理事件等几个步骤。显示属性、设置事件监听,处理事件等几个步骤。n Label被称为标签组件,它是一种用来显示说明性的被称为标签组件,它是一种用来显示说明性的静态文本的组件。用户不能直接地编辑它,但可以在应静态文本的组件。用户不能直接地编辑它,但可以在应用程序中,通过调用用程序中,通过调用Label提供的成员方法更换文本的提供的成员方法更换文本的内容。内容。n Label类提供了三种构造方法的格式:类提供了三种构造方法
13、的格式:Label()Label(String text)Label(String text,int alignment)n alignment可以是可以是Label类定义的整型常量,比如:类定义的整型常量,比如:LEFT、CENTER和和RIGHT。Label组件组件Label类的部分成员方法类的部分成员方法n String getText()n void setText(String text)n int getAlignment()n void setAlignment(int alignment)n TextField被称为单行文本组件,它是一种用来接收被称为单行文本组件,它是一种用来
14、接收用户输入的组件。用户输入的组件。TextField是是TextComponent的子类。的子类。在在TextComponent类中描述了可编辑的文本串,并提类中描述了可编辑的文本串,并提供了一组成员方法,用来决定组件是否可编辑。如果供了一组成员方法,用来决定组件是否可编辑。如果可编辑,可以利用提供的相关成员方法对文本内容进可编辑,可以利用提供的相关成员方法对文本内容进行编辑操作。行编辑操作。TextField组件组件TextComponent类的部分方法类的部分方法 n void setText(String t)n String getText()n String getSelected
15、Text()n boolean isEditable()n void setEditable(boolean b)n Color getBackground()n void setBackground(Color c)TextField类提供的构造方法和成员方法类提供的构造方法和成员方法n TextField()n TextField(String text)n TextField(int columns)n TextField(String text,int columns)n char getEchoChar()n void setEchoChar(char c)n int getColu
16、mns()n void setColumns(int columns)n Button组件被称为按钮组件,它是图形用户界面中非常组件被称为按钮组件,它是图形用户界面中非常重要的一种基本组件。主要用来激活用户编写的某项操作,重要的一种基本组件。主要用来激活用户编写的某项操作,即当用户按下某个按钮后,应用程序就会立即执行某个代即当用户按下某个按钮后,应用程序就会立即执行某个代码段。码段。n 在在Button类中提供了两个构造方法。类中提供了两个构造方法。Button()Button(String label)n 在在Button类中提供了两个与按钮标签有关的成员方法。类中提供了两个与按钮标签有关的
17、成员方法。String getLabel()void setLabel(String label)Button组件组件n Checkbox被称为复选组件,它是一种图形化的、可被称为复选组件,它是一种图形化的、可以设置以设置“on”和和“off”两种状态的组件。用鼠标点击两种状态的组件。用鼠标点击一个复选按钮,可以使其在一个复选按钮,可以使其在“on”和和“off”之间进行之间进行切换。切换。n 在在Checkbox类中,主要提供了三种构造方法的格式:类中,主要提供了三种构造方法的格式:Checkbox()Checkbox(String label)Checkbox(String label,b
18、oolean state)Checkbox组件组件Checkbox类的部分成员方法类的部分成员方法nString getLabel()nvoid setLabel(String label)nboolean getState()nvoid setState(boolean state)9.4 布局管理器布局管理器 n 所谓布局管理器是指按照指定的策略,安排并管理所谓布局管理器是指按照指定的策略,安排并管理组件在容器中排列位置的一种特殊对象。组件在容器中排列位置的一种特殊对象。n FlowLayout是是Panel容器的默认布局管理器。它按照容器的默认布局管理器。它按照从上到下,从左到右的规则,
19、将添加到容器中的组件从上到下,从左到右的规则,将添加到容器中的组件依次排列。如果一行中没有足够的空间放置下一个组依次排列。如果一行中没有足够的空间放置下一个组件,件,FlowLayout换行后,将这个组件放置在新的一行换行后,将这个组件放置在新的一行上。另外,在创建上。另外,在创建FlowLayout对象时,可以指定一行对象时,可以指定一行中组件的对齐方式,默认为居中,还可以指定每个组中组件的对齐方式,默认为居中,还可以指定每个组件之间,在水平和垂直方向上的间隙大小,默认值为件之间,在水平和垂直方向上的间隙大小,默认值为5个像素。这种布局管理器并不调整每个组件的大小以个像素。这种布局管理器并不
20、调整每个组件的大小以适应容器的大小,而是永远保持每个组件的最佳尺寸,适应容器的大小,而是永远保持每个组件的最佳尺寸,剩余的空间用空格填补。剩余的空间用空格填补。FlowLayout布局管理器布局管理器n 在在FlowLayout类中,提供了构造方法和部分方法:类中,提供了构造方法和部分方法:n FlowLayout()n FlowLayout(int align)n FlowLayout(int align,int hgap,int vgap)n int getAlignment()n void setAlignment(int align)n int getHgap()n void setH
21、gap(int hgap)n int getVgap()n void setVgap(int vgap)FlowLayout布局管理器布局管理器n BorderLayout是是Frame和和Dialog两种容器的默认布局两种容器的默认布局管理器,它将容器分为管理器,它将容器分为5个部分,分别命名为个部分,分别命名为North、South、West、East和和Center。n BorderLayout类提供了两种格式的构造方法:类提供了两种格式的构造方法:BorderLayout()BorderLayout(int hgap,int vgap)BorderLayout布局管理器布局管理器n G
22、ridLayout是一种很容易理解的布局管理器,它将是一种很容易理解的布局管理器,它将容器按照指定的行数、列数分成大小均匀的网格,且容器按照指定的行数、列数分成大小均匀的网格,且放入容器中的每个组件的大小都一样。将组件添加到放入容器中的每个组件的大小都一样。将组件添加到容器中可以有两种基本方法:一是使用默认的布局顺容器中可以有两种基本方法:一是使用默认的布局顺序,即按照从上到下,从左到右的次序将组件放入容序,即按照从上到下,从左到右的次序将组件放入容器的每个网格中;二是采用器的每个网格中;二是采用add(Component comp,int index)将组件放入到指定的网格中。将组件放入到指
23、定的网格中。GridLayout布局管理器布局管理器n GridLayout类提供了三种格式的构造方法:类提供了三种格式的构造方法:GridLayout()GridLayout(int rows,int cols)GridLayout(int rows,int cols,int hgap,int vgap)GridLayout布局管理器布局管理器n CardLayout是一种将每个组件看作一张卡片,且将是一种将每个组件看作一张卡片,且将所有卡片码放成一摞,每一时刻只有一张卡片被显示所有卡片码放成一摞,每一时刻只有一张卡片被显示的布局管理器。有人将其形象地描述为一副落成一叠的布局管理器。有人将其
24、形象地描述为一副落成一叠的扑克牌。第一个添加到容器中的组件位于最低层,的扑克牌。第一个添加到容器中的组件位于最低层,最后一个添加到容器中的组件位于最上层。最后一个添加到容器中的组件位于最上层。CardLayout布局管理器布局管理器9.5 用用Swing创创建建图图形用形用户户界面界面n Swing是在是在AWT基础上发展而来的,目前越来越基础上发展而来的,目前越来越多的人偏爱使用多的人偏爱使用Swing组件,这是因为组件,这是因为Swing是是Java图形用户界面工具进步的象征,是图形用户界面工具进步的象征,是AWT必然的替代必然的替代品。品。Swing概述概述 n与与AWT相比较,相比较,
25、Swing具有以下几点优势:具有以下几点优势:(1)AWT是基于同位体(是基于同位体(Peer)的体系结构,这种设的体系结构,这种设计策略严重限制了用户界面中可以使用的组件种类及计策略严重限制了用户界面中可以使用的组件种类及功能,成为一个致命的缺憾;而功能,成为一个致命的缺憾;而Swing不需要本地提不需要本地提供同位体,这样可以给设计者带来更大的灵活性,有供同位体,这样可以给设计者带来更大的灵活性,有利于增强组件的功能。利于增强组件的功能。(2)在)在AWT中,有一部分代码是用中,有一部分代码是用C编写的;而编写的;而Swing是是100%的纯的纯Java,增强了应用程序的与环境无增强了应用
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图形用户界面 图形 用户界面
限制150内