资源描述
Java面向对象程序设计面向对象程序设计第第 6 章章 图形用户界面图形用户界面第第6章章 图形用户界面图形用户界面6.1 Java6.1 Java抽象窗口工具集抽象窗口工具集6.2 AWT6.2 AWT组件组件6.3 6.3 容器容器6.4 6.4 组件布局管理组件布局管理6.5 6.5 事件处理事件处理6.6 6.6 颜色和字体颜色和字体6.7 6.7 颜色和字体颜色和字体6.8 Swing6.8 Swing简介简介经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用6.1 Java6.1 Java抽象窗口工具集抽象窗口工具集图形用户界面(图形用户界面(Graphics User Interface,Graphics User Interface,GUIGUI),是指用图形的方式,借助菜单、按钮),是指用图形的方式,借助菜单、按钮等标准界面元素和鼠标操作,帮助用户方便等标准界面元素和鼠标操作,帮助用户方便地向计算机系统发出指令,启动操作,并将地向计算机系统发出指令,启动操作,并将系统运行的结果同样以图形方式显示给用户。系统运行的结果同样以图形方式显示给用户。图形用户界面画面生动、操作简单,深受广图形用户界面画面生动、操作简单,深受广大用户的喜爱和欢迎,已经成为目前几乎所大用户的喜爱和欢迎,已经成为目前几乎所有应用软件的既成标准。所以学习设计和开有应用软件的既成标准。所以学习设计和开发图形用户界面,是应用软件开发员必修的发图形用户界面,是应用软件开发员必修的一课。一课。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用AWTAWT(Abstract Window Toolkit,Abstract Window Toolkit,抽象窗口工具集)抽象窗口工具集)是是JavaJava语言提供的用户界面设计工具。语言提供的用户界面设计工具。AWTAWT的核心思的核心思想是把想是把GUIGUI看作是由一系列的组件看作是由一系列的组件(Componetn)(Componetn)构成,构成,组件是一个可以以图形化的方式显示在屏幕上并能与组件是一个可以以图形化的方式显示在屏幕上并能与用户进行交互的对象,例如一个按钮、一个标签等。用户进行交互的对象,例如一个按钮、一个标签等。组件不能独立地显示出来,必须将组件放在一定的容组件不能独立地显示出来,必须将组件放在一定的容器才可以显示出来。容器(器才可以显示出来。容器(ContainerContainer)实际是)实际是ComponentComponent的子类,因此容器类对象本身也是一个组的子类,因此容器类对象本身也是一个组件,具有组件的所有性质,另外还具有容纳其他组件件,具有组件的所有性质,另外还具有容纳其他组件和容器的功能。和容器的功能。AWTAWT由由java.awtjava.awt包提供,该包中有许多用来设计用户包提供,该包中有许多用来设计用户界面的类和接口,用户在界面的类和接口,用户在JavaApplicationJavaApplication或或AppletApplet中进行中进行GUIGUI设计。设计。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用AWTAWT组件相关类的层次关系如图组件相关类的层次关系如图6.16.1所示。所示。AppletAppletChoiceChoiceObjectObjectComponentComponentDialogDialogFrameFrameCheckBoxCheckBoxButtonButtonLabelLabelWindowWindowPanelPanelContainerContainer经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用设计和实现用户图形界面主要包括以下三个方面:设计和实现用户图形界面主要包括以下三个方面:u设计组件(设计组件(ComponentComponent):包括设):包括设计计Java.awtJava.awt包中提供的组件和用包中提供的组件和用户自定义的组件;户自定义的组件;u指定布局(指定布局(LayoutLayout):根据设计):根据设计需要排列容器内各组件的位置;需要排列容器内各组件的位置;u设计响应事件(设计响应事件(EventEvent)。)。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用6.2 AWT6.2 AWT组件组件组件是构成组件是构成GUIGUI的基本要素,通过对不同事的基本要素,通过对不同事件的响应来完成和用户的交互或组件之间件的响应来完成和用户的交互或组件之间的交互。组件一般作为一个对象放置在容的交互。组件一般作为一个对象放置在容器内,组件通过容器的器内,组件通过容器的addadd方法加入到容器方法加入到容器中。中。抽象类抽象类ComponentComponent作为作为Java GUIJava GUI组件的共同组件的共同父类,它规定了所有父类,它规定了所有GUIGUI组件的基本特性,组件的基本特性,该类中定义的方法实现了作为一个该类中定义的方法实现了作为一个GUIGUI部件部件所应具备的基本功能,所应具备的基本功能,经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用ComponentComponent类常用属性及对应操作方法类常用属性及对应操作方法属性名称属性名称 设置属性的方法设置属性的方法 获取属性的方法获取属性的方法 背景颜色 Void setBackground(Color)Void setBackground(Color)Color getBackground()Color getBackground()边界 void setBounds(Rectangle)void setBounds(Rectangle)voidsetBounds(int,int,int,int)voidsetBounds(int,int,int,int)Rectangle getBounds()Rectangle getBounds()可用性 void setEnabled(booleanvoid setEnabled(boolean)boolean isEnabled()boolean isEnabled()字体 void setFont(Font)void setFont(Font)Font getFont()Font getFont()前景名 void setForeground(Color)void setForeground(Color)Font getForeground(Color)Font getForeground(Color)位置 void setLocation(Point)void setLocation(Point)void setLocation(int,int)void setLocation(int,int)Point getLocation()Point Point getLocation()Point getLocationOnScreen()getLocationOnScreen()部件名称 void setName(String)void setName(String)String getName()String getName()尺寸 void setSize(Dimensionvoid setSize(Dimension Dimension getSize()Dimension getSize()可见性 void setVisible(boolean)void setVisible(boolean)boolean getVisible()boolean getVisible()经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用常用常用AWTAWT组件组件(1):(1):组件名称组件名称父类父类说明说明Button Button Component Component 可接收单击操作的命令按钮可接收单击操作的命令按钮 Checkbox Checkbox Component Component 复选框组件复选框组件 Choice Choice Component Component 下拉式列表框下拉式列表框 Component Component Object Object 抽象组件类抽象组件类 Container Container Component Component 抽象容器类抽象容器类 DialogDialogWindow Window 对话框组件对话框组件 Frame Frame Window Window 基本的基本的Java GUIJava GUI窗口组件窗口组件 Label Label Component Component 标签类标签类 List List Component Component 包含内容可变的条目的列表框组件包含内容可变的条目的列表框组件 经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用Panel Panel Container Container 基本容器类,不能单独停泊基本容器类,不能单独停泊 Scrollbar Scrollbar Component Component 滚动条组件滚动条组件 TextComponent TextComponent Component Component TextFieldTextField和和TextAreaTextArea的基本功能的基本功能 TextField TextField TextComponent TextComponent 单行文本框单行文本框 TextArea TextArea TextComponent TextComponent 多行文本框多行文本框 Window Window Container Container 抽象的抽象的GUIGUI窗口类,无布局管理器窗口类,无布局管理器 MenuBar MenuBar MenuComponent MenuComponent 菜单条组件菜单条组件 MenuItem MenuItem MenuComponent MenuComponent 菜单项组件菜单项组件 MenuMenuMenuItemMenuItem菜单组件菜单组件 PopupMenu PopupMenu MenuMenu弹出式菜单组件弹出式菜单组件 常用常用AWTAWT组件组件(2):(2):经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用6.2.1 6.2.1 标签、文本框和命令按钮标签、文本框和命令按钮1 1、标签、标签标签的功能是显示单行的字符串,可在屏幕上显示一些提示标签的功能是显示单行的字符串,可在屏幕上显示一些提示性,说明性的文字。如在文本框的旁边加上一个标签,说性,说明性的文字。如在文本框的旁边加上一个标签,说明文本框的功能。明文本框的功能。标签的构造方法有以下三种:标签的构造方法有以下三种:(1)Label()(1)Label()该方法用来创建一个没有显示内容的对象;该方法用来创建一个没有显示内容的对象;(2)Label(String str)(2)Label(String str)该方法用来创建一个显示内容为该方法用来创建一个显示内容为strstr的对象的对象(3 3)Label(String str,int alignment)Label(String str,int alignment)该方法除了用来该方法除了用来创建一个显示内容为创建一个显示内容为LabelLabel的对象外,还设置了的对象外,还设置了LabelLabel的对的对齐方式。齐方式。LabelLabel的对齐方式有的对齐方式有LEFTLEFT、CENTERCENTER和和RIGHTRIGHT来表示来表示左对齐、居中和右对齐。左对齐、居中和右对齐。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用标签的常用方法有:标签的常用方法有:int getAlignment()int getAlignment()返回当前的对齐方式;返回当前的对齐方式;String getName()String getName()返回当前对齐的名字;返回当前对齐的名字;String getText()String getText()返回当前对象显示的文本;返回当前对象显示的文本;void setAlignment(int align)void setAlignment(int align)设置对齐方式;设置对齐方式;void setText(String str)void setText(String str)设置标签对象显示的设置标签对象显示的内容;内容;经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用2 2、文本框、文本框JavaJava中用于处理文本的基本组件有两种:单行文本中用于处理文本的基本组件有两种:单行文本框框TextFieldTextField和多行文本区域和多行文本区域TextAreaTextArea,用来接受,用来接受用户的键盘输入。用户的键盘输入。TextFieldTextField的构造方法及常用方法有:的构造方法及常用方法有:(1)TextField()(1)TextField()创建一个默认长度的文本框;创建一个默认长度的文本框;(2)TextField(int columns)(2)TextField(int columns)创建一个指定长度的文创建一个指定长度的文本框;本框;(3)TextField(String text)(3)TextField(String text)创建一个带有初始文本创建一个带有初始文本内容的文本框;内容的文本框;(4)TextField(String text,int columns)(4)TextField(String text,int columns)创建个创建个带有初始文本内容并具有指定长度的文本框;带有初始文本内容并具有指定长度的文本框;经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用(5)void setText(String text)(5)void setText(String text)设定文本框设定文本框的内容;的内容;(6)void setEchoChar(char c)(6)void setEchoChar(char c)设定用户输设定用户输入字符的回显字符,例如输入用户口令时入字符的回显字符,例如输入用户口令时可设定回显字符为可设定回显字符为*来屏蔽;来屏蔽;(7)String getText()(7)String getText()获取文本框的内容;获取文本框的内容;(8)void setEditable(boolean e)(8)void setEditable(boolean e)设置文本设置文本框的可编辑性,默认为可编辑;框的可编辑性,默认为可编辑;2 2、文本框、文本框经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用TextAreaTextArea类的构造方法及常用方法有:类的构造方法及常用方法有:TextArea()TextArea()创建一个默认行数和列数的文本区;创建一个默认行数和列数的文本区;TextArea(int rows,int columns)TextArea(int rows,int columns)创建一个创建一个rowsrows行,行,columnscolumns列的文本区;列的文本区;TextArea(String text)TextArea(String text)创建一个带有初始文本内容的创建一个带有初始文本内容的文本区;文本区;TextArea(String text,int rows,int columns)TextArea(String text,int rows,int columns)创建创建文本区,初始字符串为文本区,初始字符串为texttext,行数为,行数为rowsrows,列数为,列数为columnscolumns。TextArea(String text,int rows,int clumns,int TextArea(String text,int rows,int clumns,int scrollbar)scrollbar),在上面文本区的基础上增加滚动条,在上面文本区的基础上增加滚动条,scrollbarscrollbar取值可以是:取值可以是:SCROLLBARS_HORIZONTAL_ONLY(SCROLLBARS_HORIZONTAL_ONLY(仅有水平滚动条仅有水平滚动条)、SCROLLBARS_VERTICAL_ONLYSCROLLBARS_VERTICAL_ONLY(仅有垂直滚动条)、(仅有垂直滚动条)、SCROLLBARS_BOTH(SCROLLBARS_BOTH(垂直,水平滚动条都有垂直,水平滚动条都有)、SCROLLBARS_NONE(SCROLLBARS_NONE(没有滚动条没有滚动条);经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用6 void setText(String text)设置文本区的内容;7 String getText()获取文本区的文本;8 void append(String str)在文本区的尾部添加文本;9 void insert(String str,int position)在指定位置插入文本;10 void setRows(int rows)设定文本框的行数;11 int getRows()返回文本区的行数;12 void setEditable(boolean b)设定文本区的可编辑状态。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用3 3、按钮、按钮Button类的构造方法及常用方法:(1)Button()创建一个没有标题的按钮;(2)Button(String label)创建一个有文字标题的按钮;(3)String getLabel()返回按钮的显示标题;(4)void setLabel(String label)设置按钮上显示的标题。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用设计程序运行结果如下图的设计程序运行结果如下图的AppletApplet经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用6.2.2 6.2.2 单选框和复选框单选框和复选框复选框(复选框(CheckboxCheckbox)用于设置多重选择,可以让用户作出多项)用于设置多重选择,可以让用户作出多项选择。选择。单选框又称为选项按钮,是一组按钮,用户只能从中选择一个。单选框又称为选项按钮,是一组按钮,用户只能从中选择一个。复选框和选项按钮的构造方法和主要方法如下复选框和选项按钮的构造方法和主要方法如下 :(1)Checkbox()(1)Checkbox()创建个没有标签的复选框;创建个没有标签的复选框;(2)Checkbox(“(2)Checkbox(“北京北京”)创建一个标签为创建一个标签为“北京北京“的复选框;的复选框;(3)CheckboxGroup()(3)CheckboxGroup()创建选项按钮。创建选项按钮。(4)String getLabel()(4)String getLabel()返回复选框或单选按钮的标签;返回复选框或单选按钮的标签;(5)CheckboxGroup getCheckboxGroup()(5)CheckboxGroup getCheckboxGroup()返回单选按钮的复返回单选按钮的复选框组;选框组;(6)void setCheckboxGroup(CheckboxGroup g)(6)void setCheckboxGroup(CheckboxGroup g)设置单选按设置单选按钮所属的选项框组;钮所属的选项框组;(7)boolean getState()(7)boolean getState()返回复选框或单选按钮的选中状态;返回复选框或单选按钮的选中状态;(8)void setState(Boolean state)(8)void setState(Boolean state)设置复选框或单选框的设置复选框或单选框的选中状态;选中状态;经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用例例:设计程序运行结果如下图的设计程序运行结果如下图的AppletApplet经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用6.2.36.2.3下拉列表框和列表框下拉列表框和列表框1 1、下拉列表框、下拉列表框下拉列表框(下拉列表框(ChoiceChoice)是图形界面中提供选项的常用组件,)是图形界面中提供选项的常用组件,用户可以看到下拉列表框中的第一个选项和它旁边的箭头用户可以看到下拉列表框中的第一个选项和它旁边的箭头按钮,单击箭头按钮时,下拉列表框打开,用户可以在列按钮,单击箭头按钮时,下拉列表框打开,用户可以在列表框中选择其他选项进行更改。其常用的方法有:表框中选择其他选项进行更改。其常用的方法有:(1)void addItem(String item)(1)void addItem(String item)向列表框中添加选项向列表框中添加选项itemitem;(2)int countItem()(2)int countItem()返回列表框中的选项个数;返回列表框中的选项个数;(3)String getItem(int index)(3)String getItem(int index)返回指定下标值的某个选返回指定下标值的某个选项;项;(4)int getSelectedIndex()(4)int getSelectedIndex()返回被选中的选项的下标值;返回被选中的选项的下标值;(5)String getSelectedItem()(5)String getSelectedItem()返回被选中的选项;返回被选中的选项;经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用(6)void select(int index)(6)void select(int index)选择指定下标选择指定下标值的选项;值的选项;(7)void select(String item)(7)void select(String item)选择指定的选择指定的选项;选项;(8)void insert(String item,int index)(8)void insert(String item,int index)在下拉列表框中在下拉列表框中indexindex索引处插入名称为索引处插入名称为itemitem的选项;的选项;(9)void remove(int index)(9)void remove(int index)删除下拉列表删除下拉列表框中框中indexindex索引处的选项;索引处的选项;(10)removeAll()(10)removeAll()删除下拉列表框中所有选删除下拉列表框中所有选项。项。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用2 2、列表框、列表框 列表框(列表框(ListList)提供了多个文本选项,所有选项)提供了多个文本选项,所有选项都是可见的,如果选项数目超出了列表框可见的都是可见的,如果选项数目超出了列表框可见的范围,则列表框右边会出现个滚动条,同时,列范围,则列表框右边会出现个滚动条,同时,列表框支持多项选择。其构造方法与常用方法有:表框支持多项选择。其构造方法与常用方法有:(1)List()(1)List()创建一个空列表框;创建一个空列表框;(2)List(int rows)(2)List(int rows)创建一个具有创建一个具有rowsrows行的空列表行的空列表框;框;(3)List(int rows,boolean multiple)(3)List(int rows,boolean multiple)创建个创建个rowsrows行的空列表框,行的空列表框,multiplemultiple值为值为truetrue,则支持,则支持多重选择,否则只支持单项选择,默认为多重选择,否则只支持单项选择,默认为falsefalse;(4)void delItem(int index)(4)void delItem(int index)删除列表框中删除列表框中indexindex索引处的选项内容;索引处的选项内容;经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用(5)String getItem(int index)(5)String getItem(int index)获取指定位获取指定位置置indexindex索引处的选项内容;索引处的选项内容;(6)String getItems()(6)String getItems()获取所有选项内容;获取所有选项内容;(7)int getItemCount()(7)int getItemCount()获取列表框中共有获取列表框中共有多少个选项多少个选项(8)void replaceItem(String item,int(8)void replaceItem(String item,int index)index)将将indexindex处位置的选项换成处位置的选项换成itemitem;(9)void setMultipleMode(boolean b)b(9)void setMultipleMode(boolean b)b为为truetrue则允许多项选择,否则不允许。则允许多项选择,否则不允许。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用例例6.3 6.3 列表框应用实例列表框应用实例 import java.awt.*;import java.applet.Applet;import java.applet.Applet;public class TestList extends Applet public class TestList extends Applet public void init()public void init()Label label1=new Label(Label label1=new Label(请选择系别:请选择系别:););Label label2=new Label(Label label2=new Label(中国名牌大学:中国名牌大学:););Choice c=new Choice();Choice c=new Choice();c.add(c.add(计算机系计算机系););c.add(c.add(商学系商学系););c.add(c.add(艺术系艺术系););c.add(c.add(机电系机电系););c.addItem(c.addItem(信息管理系信息管理系););c.insert(c.insert(法律系法律系,2);,2);c.select(2);c.select(2);经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用List l=new List(4);List l=new List(4);l.add(l.add(北京大学北京大学);l.add();l.add(清华大学清华大学););l.add(l.add(复旦大学复旦大学);l.add();l.add(浙江大学浙江大学););l.add(l.add(中国海洋大学中国海洋大学););l.setMultipleMode(true);l.setMultipleMode(true);add(label1);add(label1);add(c);add(c);add(label2);add(label2);add(l);add(l);程序运行结果如右图所示:程序运行结果如右图所示:经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用6.36.3容器容器容器是用来组织其他界面成份和元素容器是用来组织其他界面成份和元素的单元。一般说来一个应用程序的图的单元。一般说来一个应用程序的图形用户界面对应于一个复杂的容器,形用户界面对应于一个复杂的容器,如一个窗口。这个容器内部将包含许如一个窗口。这个容器内部将包含许多界面元素,这些界面元素本身也可多界面元素,这些界面元素本身也可以是另外一个容器,这个容器再进一以是另外一个容器,这个容器再进一步包含它的界面元素,依次类推就构步包含它的界面元素,依次类推就构成一个复杂的图形界面系统。成一个复杂的图形界面系统。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用容器的主要作用和特点如下:容器的主要作用和特点如下:容器有一定范围:一般容器都是矩形的,容器范容器有一定范围:一般容器都是矩形的,容器范围边界可以用边框框出来,有些则没有可见的标围边界可以用边框框出来,有些则没有可见的标记;记;容器有一定的位置:这个位置可以是屏幕四角的容器有一定的位置:这个位置可以是屏幕四角的绝对位置,也可以是相对于其他窗口边框的相对绝对位置,也可以是相对于其他窗口边框的相对位置;位置;容器中可以包含其他的许多界面成分和元素:当容器中可以包含其他的许多界面成分和元素:当容器被打开显示时,它上面的所有元素也同时显容器被打开显示时,它上面的所有元素也同时显示出来,当容器被关闭和隐藏时,它所包含的元示出来,当容器被关闭和隐藏时,它所包含的元素也一起被隐藏;素也一起被隐藏;容器可以按一定的规则来物理地安排它所包含的容器可以按一定的规则来物理地安排它所包含的元素,如这些元素的相对位置关系、它们的前后元素,如这些元素的相对位置关系、它们的前后排列关系等。排列关系等。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用JavaJava中中GUIGUI提供两种主要的容器类型:提供两种主要的容器类型:PanelPanel类和类和WindowWindow类。这两个类都是抽象类。类。这两个类都是抽象类。WindowWindow类是可自由停泊的顶层窗口,类是可自由停泊的顶层窗口,WindowWindow类的两个重要子类是框架类(类的两个重要子类是框架类(FrameFrame)和对)和对话框类(话框类(DialogDialog),这两个类者有边框,并),这两个类者有边框,并且都可以移动、放大、缩小和关闭功能的容且都可以移动、放大、缩小和关闭功能的容器;器;PanelPanel类是可作为容器容纳其他组件的类是可作为容器容纳其他组件的非顶层容器,它不能独立存在,必须被添加非顶层容器,它不能独立存在,必须被添加到其他容器中(如到其他容器中(如WindowWindow或或AppletApplet)。)。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用从从ComponentComponent类继承的下述成员方法类继承的下述成员方法:public setLocation(int x,int y)public setLocation(int x,int y):移动:移动当前组件到一个新的位置;当前组件到一个新的位置;public setSize(int width,int height)public setSize(int width,int height):重新设置组件大小;重新设置组件大小;public setBounds(int x,int y,int public setBounds(int x,int y,int width,int height)width,int height):移动并重置当前组件:移动并重置当前组件大小。大小。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用6.3.1 Frame6.3.1 Frame类类 抽象抽象WindowWindow类不能实例化,实际程序中经常类不能实例化,实际程序中经常使用的是其子类使用的是其子类FrameFrame。FrameFrame对象显示效果对象显示效果是一个窗口,带有标题,可以由用户重置其是一个窗口,带有标题,可以由用户重置其大小。在其构造方法中通过大小。在其构造方法中通过StringString参数指定参数指定窗口标题,窗口标题,FrameFrame对象默认尺寸为对象默认尺寸为0 00 0像素像素且不可见,可使用且不可见,可使用setSize()setSize()方法设置窗口方法设置窗口大小,使用大小,使用setVisible(true)setVisible(true)方法使之变为方法使之变为可见。可见。FrameFrame默认的布局管理器是默认的布局管理器是BorderLayoutBorderLayout,可使用,可使用setLayout()setLayout()方法改方法改变其默认布局管理器。变其默认布局管理器。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用例:例:import java.awt.import java.awt.*;public class TestFrame public class TestFrame public static void main(String args)public static void main(String args)Frame f=new Frame(My Frame Test);Frame f=new Frame(My Frame Test);f.setSize(200,150);f.setSize(200,150);f.setBackground(Color.BLUE);f.setBackground(Color.BLUE);f.setVisible(true);f.setVisible(true);经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用程序运行结果如图所示:程序运行结果如图所示:经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用6.3.2 Panel6.3.2 Panel类类PanelPanel类可以容纳其他组件,在程序中类可以容纳其他组件,在程序中经常用于布局和定位,它可以采用与经常用于布局和定位,它可以采用与所在容器不同的布局管理器,所在容器不同的布局管理器,PanelPanel对对象默认的布局管理器是象默认的布局管理器是FlowLayoutFlowLayout,也可使用也可使用setLayout()setLayout()方法改变其默认方法改变其默认布局管理器。布局管理器。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用例:例:import java.awt.import java.awt.*;public class TestPanel public class TestPanel public static void main(String args)public static void main(String args)Frame f=new Frame(My Frame with Frame f=new Frame(My Frame with Panel);Panel);Panel p=new Panel();Panel p=new Panel();f.setSize(180,120);f.setSize(180,120);f.setBackground(Color.BLUE);f.setBackground(Color.BLUE);f.setLayout(null);/f.setLayout(null);/取消布局管理器取消布局管理器p.setSize(120,60);p.setSize(120,60);p.setBackground(Color.GREEN);p.setBackground(Color.GREEN);f.add(p);f.add(p);f.setVisible(true);f.setVisible(true);经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用程序运行结果如图程序运行结果如图6.66.6所示:所示:经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用本讲小结:本讲首先介绍了AWT(抽象窗口工具集)的概念,接着讲述了Java中的基本组件:标签、文本框、命令按钮、单选框、复选框、下拉列表框和列表框,最后介绍了Frame类和Panel类两个容器类的使用。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用6.4 6.4 组件布局管理组件布局管理为了使我们生成的图形用户界面具有良好为了使我们生成的图形用户界面具有良好的平台无关性,的平台无关性,JavaJava语言提供了布局管理语言提供了布局管理器这个工具来管理组件在容器中的位置,器这个工具来管理组件在容器中的位置,而不使用直接设置组件位置和大小的方式。而不使用直接设置组件位置和大小的方式。每个容器都有一个布局管理器,当容器需每个容器都有一个布局管理器,当容器需要对某个组件进行定位或判断其大小尺寸要对某个组件进行定位或判断其大小尺寸时,会就调用其对应的布局管理器。时,会就调用其对应的布局管理器。JavaJava语言中包含的容器布局管理器有:语言中包含的容器布局管理器有:FlowLayoutFlowLayout、BorderLayoutBorderLayout、GridLayoutGridLayout和和CardLayoutCardLayout。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用6.4.1 FlowLayout6.4.1 FlowLayout布局管理器布局管理器FlowLayoutFlowLayout(顺序布局)是最基本的一种布局,(顺序布局)是最基本的一种布局,是是PanelPanel面板及其子类面板及其子类AppletApplet的默认布局方式,前的默认布局方式,前面介绍的例子都使用了默认的顺序布局。这种布面介绍的例子都使用了默认的顺序布局。这种布局方式将组件依次逐行定位,行内从左到右顺序局方式将组件依次逐行定位,行内从左到右顺序排列,一行排满后就转到下一行继续排列,直到排列,一行排满后就转到下一行继续排列,直到把所有的组件都显示出来。把所有的组件都显示出来。FlowLayoutFlowLayout布局默认布局默认对齐方式为居中对齐,不改变组件的大小,按组对齐方式为居中对齐,不改变组件的大小,按组件原有尺寸显示组件。件原有尺寸显示组件。在顺序布局方式下,由于功能有限,不能很好地在顺序布局方式下,由于功能有限,不能很好地控制组件的排列,所以常用在组件较少的情况下,控制组件的排列,所以常用在组件较少的情况下,组件较多时,可以使用容器的组件较多时,可以使用容器的setLayoutsetLayout方法改变方法改变组件布局方式。组件布局方式。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用6.4.2 BorderLayout6.4.2 BorderLayout布局管理器布局管理器BorderLayoutBorderLayout(边界布局)是(边界布局)是WindowWindow、FrameFrame和和DialogDialog的默的默认布局管理器。认布局管理器。BorderLayoutBorderLayout把容器分为把容器分为5 5个区:个区:NorthNorth(北区)、(北区)、SouthSouth(南区)、(南区)、EastEast(东区)、(东区)、WestWest(西区)(西区)和和CenterCenter(中区)五个区域,其方位依据(中区)五个区域,其方位依据“上北下南,左上北下南,左西右东西右东”的规则,组件只能添加到指定的区域。如不指定的规则,组件只能添加到指定的区域。如不指定组件的加入部位,则默认加入到组件的加入部位,则默认加入到CenterCenter区域。每个区域只区域。每个区域只能加入一个组件,如加入多个,则先前加入的组件会被遗能加入一个组件,如加入多个,则先前加入的组件会被遗弃。弃。与与FlowLayoutFlowLayout不同,在使用不同,在使用BorderLayoutBorderLayout布局管理器容器布局管理器容器中,组件尺寸也被布局管理器强行控制,即组件与其所在中,组件尺寸也被布局管理器强行控制,即组件与其所在区域的尺寸相同。当区域的尺寸相同。当BorderLayoutBorderLayout型布局容器的尺寸发生型布局容器的尺寸发生变化时,其中各组件的相对位置保持不变,组件的尺寸会变化时,其中各组件的相对位置保持不变,组件的尺寸会随所在区域进行缩放调整。随所在区域进行缩放调整。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用例:例:import java.awt.import java.awt.*;import java.applet.Applet;import java.applet.Applet;public class TestBorderLayout extends Applet public class TestBorderLayout extends Applet Button bN,bS,bW,bE,bC;Button bN,bS,bW,bE,bC;public void init()public void init()BorderLayout layout=new BorderLayout();BorderLayout layout=new BorderLayout();setLayout(layout);setLayout(layout);bN=new Button(North);bN=new Button(North);bS=new Button(South);bS=new Button(South);bW=new Button(West);bW=new Button(West);bE=new Button(East);bE=new Button(East);bC=new Button(Center);bC=new Button(Center);add(bN,North);add(bN,North);add(bS,South);add(bS,South);add(West,bW);add(West,bW);add(East,bE);add(East,bE);add(Center,bC);add(Center,bC);经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用程序运行结果如图程序运行结果如图6.76.7所示:所示:经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用6.4.3 GridLayout6.4.3 GridLayout布局管理器布局管理器GridLayoutGridLayout(网格布局)管理器将容器区域(网格布局)管理器将容器区域划分成规则的若干矩形网格,每个单元格区划分成规则的若干矩形网格,每个单元格区域大小相同,每个网格可以放置一个组件,域大小相同,每个网格可以放置一个组件,组件添加到网格中时组件添加到网格中时 ,先从左到右添满一,先从左到右添满一行后换行,再从上到下。与行后换行,再从上到下。与BorderLayoutBorderLayout布布局类型一样,局类型一样,GridLayoutGridLayout型布局中的组件大型布局中的组件大小被布局管理器强行控制,与网格同等大小,小被布局管理器强行控制,与网格同等大小,当容器尺寸发生变化时,其中的组件相对位当容器尺寸发生变化时,其中的组件相对位置不变,但大小发生变化。创建网格布局管置不变,但大小发生变化。创建网格布局管理器时,可以给出网格的行数和列数。理器时,可以给出网格的行数和列数。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用例:例:import java.awt.import java.awt.*;import java.applet.Applet;import java.applet.Applet;public class TestGridLayout extends Applet public class TestGridLayout extends Applet Button b1,b2,b3,b4,b5,b6,b7,b8;Button b1,b2,b3,b4,b5,b6,b7,b8;public void init()public void init()setLayout(new GridLayout(3,4);setLa
展开阅读全文