Java面向对象程序设计第6章图形用户界面第6章图形用户界面6.1Java抽象窗口工具集6.2AWT组件6.3容器6.4组件布局管理6.5事件处理6.6颜色和字体6.7颜色和字体6.8Swing简介6.1Java抽象窗口工具集图形用户界面(GraphicsUserInterface,GUI),是指用图形的方式,借助菜单、按钮等标准界面元素和鼠标操作,帮助用户方便地向计算机系统发出指令,启动操作,并将系统运行的结果同样以图形方式显示给用户。图形用户界面画面生动、操作简单,深受广大用户的喜爱和欢迎,已经成为目前几乎所有应用软件的既成标准。所以学习设计和开发图形用户界面,是应用软件开发员必修的一课。AWT(AbstractWindowToolkit,抽象窗口工具集)是Java语言提供的用户界面设计工具。AWT的核心思想是把GUI看作是由一系列的组件(Componetn)构成,组件是一个可以以图形化的方式显示在屏幕上并能与用户进行交互的对象,例如一个按钮、一个标签等。组件不能独立地显示出来,必须将组件放在一定的容器才可以显示出来。容器(Container)实际是Component的子类,因此容器类对象本身也是一个组件,具有组件的所有性质,另外还具有容纳其他组件和容器的功能。AWT由java.awt包提供,该包中有许多用来设计用户界面的类和接口,用户在JavaApplication或Applet中进行GUI设计。AWT组件相关类的层次关系如图6.1所示。AppletChoiceObjectComponentDialogFrameCheckBoxButtonLabelWindowPanelContainer设计和实现用户图形界面主要包括以下三个方面:设计组件(Component):包括设计Java.awt包中提供的组件和用户自定义的组件;指定布局(Layout):根据设计需要排列容器内各组件的位置;设计响应事件(Event)。6.2AWT组件组件是构成GUI的基本要素,通过对不同事件的响应来完成和用户的交互或组件之间的交互。组件一般作为一个对象放置在容器内,组件通过容器的add方法加入到容器中。抽象类Component作为JavaGUI组件的共同父类,它规定了所有GUI组件的基本特性,该类中定义的方法实现了作为一个GUI部件所应具备的基本功能,Component类常用属性及对应操作方法属性名称设置属性的方法获取属性的方法背景颜色VoidsetBackground(Color)ColorgetBackground()边界voidsetBounds(Rectangle)voidsetBounds(int,int,int,int)RectanglegetBounds()可用性voidsetEnabled(boolean)booleanisEnabled()字体voidsetFont(Font)FontgetFont()前景名voidsetForeground(Color)FontgetForeground(Color)位置voidsetLocation(Point)voidsetLocation(int,int)PointgetLocation()PointgetLocationOnScreen()部件名称voidsetName(String)StringgetName()尺寸voidsetSize(DimensionDimensiongetSize()可见性voidsetVisible(boolean)booleangetVisible()常用AWT组件(1):组件名称父类说明ButtonComponent可接收单击操作的命令按钮CheckboxComponent复选框组件ChoiceComponent下拉式列表框ComponentObject抽象组件类ContainerComponent抽象容器类DialogWindow对话框组件FrameWindow基本的JavaGUI窗口组件LabelComponent标签类ListComponent包含内容可变的条目的列表框组件PanelContainer基本容器类,不能单独停泊ScrollbarComponent滚动条组件TextComponentComponentTextField和TextArea的基本功能TextFieldTextComponent单行文本框TextAreaTextComponent多行文本框WindowContainer抽象的GUI窗口类,无布局管理器MenuBarMenuComponent菜单条组件MenuItemMenuComponent菜单项组件MenuMenuItem菜单组件PopupMenuMenu弹出式菜单组件常用AWT组件(2):6.2.1标签、文本框和命令按钮1、标签标签的功能是显示单行的字符串,可在屏幕上显示一些提示性,说明性的文字。如在文本框的旁边加上一个标签,说明文本框的功能。标签的构造方法有以下三种:(1)Label()该方法用来创建一个没有显示内容的对象;(2)Label(Stringstr)该方法用来创建一个显示内容为str的对象(3)Label(Stringstr,intalignment)该方法除了用来创建一个显示内容为Label的对象外,还设置了Label的对齐方式。Label的对齐方式有LEFT、CENTER和RIGHT来表示左对齐、居中和右对齐。标签的常用方法有:intgetAlignment()返回当前的对齐方式;StringgetName()返回当前对齐的名字;StringgetText()返回当前对象显示的文本;voidsetAlignment(intalign)设置对齐方式;voidsetText(Stringstr)设置标签对象显示的内容;2、文本框Java中用于处理文本的基本组件有两种:单行文本框TextField和多行文本区域TextArea,用来接受用户的键盘输入。TextField的构造方法及常用方法有:(1)TextField()创建一个默认长度的文本框;(2)TextField(intcolumns)创建一个指定长度的文本框;(3)TextField(Stringtext)创建一个带有初始文本内容的文本框;(4)TextField(Stringtext,intcolumns)创建个带有初始文本内容并具有指定长度的文本框;(5)voidsetText(Stringtext)设定文本框的内容;(6)voidsetEchoChar(charc)设定用户输入字符的回显字符,例如输入用户口令时可设定回显字符为’*’来屏蔽;(7)StringgetText()获取文本框的内容;(8)voidsetEditable(booleane)设置文本框的可编辑性,默认为可编辑;2、文本框TextArea类的构造方法及常用方法有:1.TextArea()创建一个默认行数和列数的文本区;2.TextArea(introws,intcolumns)创建一个rows行,columns列的文本区;3.TextArea(Stringtext)创建一个带有初始文本内容的文本区;4.TextArea(Stringtext,introws,intcolumns)创建文本区,初始字符串为text,行数为rows,列数为columns。5.TextArea(Stringtext,introws,intclumns,intscrollbar),在上面文本区的基础上增加滚动条,scrollbar取值可以是:SCROLLBARS_HORIZONTAL_ONLY(仅有水平滚动条)、SCROLLBARS_VERTICAL_ONLY(仅有垂直滚动条)、SCROLLBARS_BOTH(垂直,水平滚动条都有)、SCROLLBARS_NONE(没有滚动条);6voidsetText(Stringtext)设置文本区的内容;7StringgetText()获取文本区的文本;8voidappend(Stringstr)在文本区的尾部添加文本;9voidinsert(Stringstr,intposition)在指定位置插入文本;10voidsetRows(introws)设定文本框的行数;11intgetRows()返回文本区的行数;12voidsetEditable(booleanb)设定文本区的可编辑状态。3、按钮Button类的构造方法及常用方法:(1)Button()创建一个没有标题的按钮;(2)Button(Stringlabel)创建一个有文字标题的按钮;(3)StringgetLabel()返回按钮的显示标题;(4)voidsetLabel(Stringlabel)设置按钮上显示的标题。设计程序运行结果如下图的Applet6.2.2单选框和复选框复选框(Checkbox)用于设置多重选择,可以让用户作出多项选择。单选框又称为选项按钮,是一组按钮,用户只能从中选择一个。复选框和选项按钮的构造方法和主要方法如下:(1)Checkbox()创建个没有标签的复选框;(2)Checkbox(“北京”)创建一个标签为“北京“的复选框;(3)CheckboxGroup()创建选项按钮。(4)StringgetLabel()返回复选框或单选按钮的标签;(5)CheckboxGroupgetCheckboxGroup()返回单选按钮的复选框组;(6)voidsetCheckboxGroup(CheckboxGroupg)设置单选按钮所属的选项框组;(7)booleangetState()返回复选框或单选按钮的选中状态;(8)voidsetState(Booleanstate)设置复选框或单选框的选中状态;例:设计程序运行结果如下图的Applet6.2.3下拉列表框和列表框1、下拉列表框下拉列表框(Choice)是图形界面中提供选项的常用组件,用户可以看到下拉列表框中的第一个选项和它旁边的箭头按钮,单击箭头按钮时,下拉列表框打开,用户可以在列表框中选择其他选项进行更改。其常用的方法有:(1)voidaddItem(Stringitem)向列表框中添加选项item;(2)intcountItem()返回列表框中的选项个数;(3)StringgetItem(intindex)返回指定下标值的某个选项;(4)intgetSelectedIndex()返回被选中的选项的下标值;(5)StringgetSelectedItem()返回被选中的选项;(6)voidselect(intindex)选择指定下标值的选项;(7)voidselect(Stringitem)选择指定的选项;(8)voidinsert(Stringitem,intindex)在下拉列表框中index索引处插入名称为item的选项;(9)voidremove(intindex)删除下拉列表框中index索引处的选项;(10)removeAll()删除下拉列表框中所有选项。2、列表框列表框(List)提供了多个文本选项,所有选项都是可见的,如果选项数目超出了列表框可见的范围,则列表框右边会出现个滚动条,同时,列表框支持多项选择。其构造方法与常用方法有:(1)List()创建一个空列表框;(2)List(introws)创建一个具有rows行的空列表框;(3)List(introws,booleanmultiple)创建个rows行的空列表框,multiple值为true,则支持多重选择,否则只支持单项选择,默认为false;(4)voiddelItem(intindex)删除列表框中index索引处的选项内容;(5)StringgetItem(intindex)获取指定位置index索引处的选项内容;(6)String[]getItems()获取所有选项内容;(7)intgetItemCount()获取列表框中共有多少个选项(8)voidreplaceItem(Stringitem,intinde