《图形化用户界面设计》.pptx
第八章第八章 图形化用户界面设计图形化用户界面设计 2清华大学出版社Java程序设计(第2版)本章本章英文缩略词英文缩略词列列表表缩缩 略略 词词英文全称英文全称汉译名称汉译名称GUIGraphical User Interface图形用户界面AWTAbstract Window Toolkit抽象窗口工具集JFCJava Foundation ClassesJava基础类库TPCThree Primary Colours三原色 3清华大学出版社Java程序设计(第2版)图形化用户界面图形化用户界面GUIGUI程序开发已经成为Java编程的主流。Java提供了AWT与 Swing两套以面向对象方式实现跨平台开发的GUI类库包,二者都是Java基础类库JFC(Java Foundation Classes)的重要组成部分 4清华大学出版社Java程序设计(第2版)AWTAWTAWT(Abstract Window Toolkit)是低版本JDK提供的GUI开发工具包,包含60多个组件类与接口,定义了布局管理器与事件处理机制,能够快捷而有效地开发基于窗口或基于Applet的GUI应用 5清华大学出版社Java程序设计(第2版)SwingSwingSwing是Java 2发布的功能更加完善的第二代GUI开发工具集,它构建在AWT基础之上,其事件处理机制、布局管理模式与图形绘制功能,仍然沿用AWT已有的技术成果Swing能够替代AWT,包含250多个更为丰富多样的类与接口,支持复杂GUI系统的开发 6清华大学出版社Java程序设计(第2版)AWTAWT的组件类的组件类 GUI组件(Component)又可译作GUI构件,是组成GUI应用程序的图形用户界面元素(如菜单、文本框、标签、命令按钮等)。每在GUI组件都与一个特定的与操作系统平台无关的组件类相对应。这些组件相互配合,可以快速搭建起GUI程序Java将GUI组件类分类分层,组织到一个名为java.awt的包中。用”import java.awt.*;”语句导入该包中含有的所有类与接口 7清华大学出版社Java程序设计(第2版)AWTAWT组件类的继承关系组件类的继承关系 8清华大学出版社Java程序设计(第2版)AWTAWT的基本组件列表的基本组件列表 9清华大学出版社Java程序设计(第2版)AWTAWT的容器组件的容器组件 GUI组件按照功能可分为基本组件与容器组件组件不能直接在程序运行界面中显示,必须放置在容器内才能呈现出来。容器自身首先也是一种组件,具有其他组件的共同特性;其次容器是一种特殊的组件,其特殊性在于容器的功能是用来容纳一般的组件对象与容器组件对象的,即容器除提供给其他组件作为安置场所外,其自身还可相互嵌套 10清华大学出版社Java程序设计(第2版)AWTAWT容器类的层次结构容器类的层次结构 11清华大学出版社Java程序设计(第2版)顶级顶级容器组件容器组件顶级容器,就是能够直接加载到桌面,由桌面管理系统来管理,而不需要放置在任何其他容器对象内,并且能够作为其他容器属主的容器组件Container类直接派生出Window类、Panel类、ScrollPane类等几种容器子类Window类作为顶层窗口类,不依赖于其他容器而独立存在。Window类直接派生两个子类:Frame类与Dialog类Window、Frame及Dialog是唯一有资格作为顶级容器窗口的三类组件 12清华大学出版社Java程序设计(第2版)AWTAWT容器组件的特征容器组件的特征容器有一定的位置坐标容器一般是矩形的,有一定的空间范围与尺寸,可以显示出边界外框容器组件可以嵌套,构建出一个层次结构容器还可设定背景颜色和背景图案加载到容器内的GUI界面元素的显示与隐藏依附于容器的打开与隐藏或关闭 13清华大学出版社Java程序设计(第2版)窗口容器组件窗口容器组件Window Window Window类为Frame类与Dialog类的基类,由它生成的Window对象称为窗口Window对象不拥有边框与菜单栏,在创建Window对象时,必须指明它的属主(owner)对象;能用作窗口属主的组件只能为顶级容器window、frame及dialog。用户编程时很少直接使用Window类对象作为程序的界面窗口,通常会使用该类的Frame子类生成应用窗口 14清华大学出版社Java程序设计(第2版)框架容器组件框架容器组件Frame Frame 框架组件Frame是AWT应用程序最常使用的基本容器窗口之一,Frame对象可以带有边框、标题栏、菜单栏与窗口缩放功能按钮(包括窗口最大化、最小化及关闭三个按钮)Frame类提供了大量的方法来完成窗口对象的生成与设置 15清华大学出版社Java程序设计(第2版)颜色颜色(Color)Color)类类通过AWT提供的Color类,可以为窗体或其他组件设置前景色与背景色。Color类的完整路径为,该类定义了与颜色相关的常量与方法Color类中封装了常用的13种标准颜色的符号常量。如:Color.BLACK Color.WHITE Color.RED Color.GREEN Color.BLUE Color.YELLOW 等 16清华大学出版社Java程序设计(第2版)三原色原理三原色原理Java中,颜色由红、绿、蓝三种分量构成,每种分量都是0,255范围内的整数值,或者是0.0,1.0范围内的实数值,分量的取值代表了该分量的色彩与亮度。红(Red)、绿(Green)、蓝(Blue)三种分量被称为光的三原色三原色所有可能取值的组合,能够形成256256256 种不同的色彩。与每种色彩对应的三原色的分量值称为该色彩的RGB值通过RGB方式形成颜色的原理,被称为光的三原色原理 17清华大学出版社Java程序设计(第2版)颜色设置颜色设置 GUI编程中,Color类定义了操作颜色的常量与方法,该类的完整包路径为Color类常用的三种构造方法的定义为:31public Color(int r,int g,int b);32public Color(float r,float g,float b);33public Color(int rgb);18清华大学出版社Java程序设计(第2版)获取获取RGBRGB颜色分量的方法颜色分量的方法ColorColor类提类提供了获取供了获取RGBRGB颜色分量的对应方法:颜色分量的对应方法:31public int getRed();/获取颜色的红色分量值32public int getGreen();/获取颜色的绿色分量值33public int getBlue();/获取颜色的蓝色分量值 19清华大学出版社Java程序设计(第2版)字体字体FontFont类类通过通过FontFont类可以创建字体对象,为文本设置类可以创建字体对象,为文本设置字体属性。字体的属性通常包括以下三种:字体属性。字体的属性通常包括以下三种:31字体名称:当前环境下可用的字体名称(Font Name)32字体样式:枚举常量代表标准字体样式(Font Style)33字体尺寸:字体尺寸(Font Size)表示字体的大小 20清华大学出版社Java程序设计(第2版)字字体体名称名称(Font Name)(Font Name)当前环境下可用的字体名称取决于系统中安装的字库Java系统为用户提供了五种标准的逻辑字体:SansSerif、Serif、Monospaced、Dialog和DialogInput系统将根据当前机器状态,自动将逻辑字体映射为计算机上的物理字体 21清华大学出版社Java程序设计(第2版)字体字体样式样式(Font Style)(Font Style)Java定义了三种枚举常量,来代表标准的字体样式。在具体应用中,常用加号(+)将这些常量连接起来,得到同时具备几种样式的复合样式31Font.PLAIN(常量值为0):代表正常风格的字体32Font.BOLD(常量值为1):代表加粗风格的字体33Font.ITALIC(常量值为2):代表倾斜风格的字体 22清华大学出版社Java程序设计(第2版)字字体体尺寸尺寸(Font Size)(Font Size)字体尺寸表示字体的大小,以像素为单位对于具有可见的文本属性的组件,可以调用继承自Component基类的setFont方法设置文字setFont方法的原型定义如下:void setFont(Font f);23清华大学出版社Java程序设计(第2版)字体设字体设置示例置示例 24清华大学出版社Java程序设计(第2版)JavaJava的屏幕坐标系的屏幕坐标系Java的GUI屏幕坐标原点(0,0)对应位置为屏幕的左上角,缺省的坐标单位为屏幕像素GUI应用程序的窗体起始位置默认为屏幕原点(0,0),X坐标由左至右增加,Y坐标由上至下增加使用setLocation(x,y)或setBounds(x,y,width,height)方法可以将应用窗体的左上角位置设置到指定的屏幕位置(x,y)25清华大学出版社Java程序设计(第2版)窗体与屏幕坐标系窗体与屏幕坐标系 26清华大学出版社Java程序设计(第2版)创建创建AWTAWT应用窗体的步骤应用窗体的步骤33使用窗口类或继承自父类的构造方法生成窗口对象343132用importjava.awt.*;导入AWT开发工具包所有类定义用户类,用extends子句指定Frame为其父类通过对象调用相应方法来设置窗口对象的标题以以Frame组件为例,创建应用程序窗体的步骤如下组件为例,创建应用程序窗体的步骤如下:27清华大学出版社Java程序设计(第2版)创建创建AWTAWT应用窗体的步骤应用窗体的步骤(续续)36调用setVisible方法或设置visible属性,将窗口对象默认的不可见状态改变为显示状态37启动事件处理机制为窗口设置关闭程序等基本功能通过调用相应方法来设置窗口的尺寸大小、屏幕位置、前、背景色、布局管理方案等特性35 28清华大学出版社Java程序设计(第2版)SwingSwing的组件类的组件类的组件类的组件类 对应于Swing的GUI组件有一个共同的基类JComponent,Swing组件被称为J类,因为这些类的类名首字母一律为JSwing的出现,将Java的图形用户界面提升到了一个新的层次。与AWT相比,Swing的功能更强大,提供的组件更丰富,平台的独立性与可移植性更好Swing组件的事件处理机制与AWT的事件处理机制完全一样,除可使用java.awt.event包中的各种类进行事件处理外,Swing还也可使用为它专门定制的javax.swing.event事件处理包中的类来处理事件 29清华大学出版社Java程序设计(第2版)SwingSwing的的容器组件容器组件Swing的顶层容器组件包括JWindow、JFrame、JDialog与JApplet等,其中,JApplet主要用于Applet小程序的开发。此外,JOptionPane与JPanel也是Swing常用的容器组件常用的Swing窗口容器组件包括:JFrame,JApplet,JDialog,JWindow等。其中JFrame与JDialog分别是AWT窗口容器组件Frame与Dialog的替代组件 30清华大学出版社Java程序设计(第2版)内容窗格内容窗格内容窗格内容窗格ContentPaneContentPane内容窗格ContentPane是一个用来包含除菜单栏以外的其他GUI组件的容器对象低版本的JDK中,向JFrame窗口中添加组件时,必须先取得它的ContentPane对象,然后再使用add()方法把组件加入到ContentPane对象中 31清华大学出版社Java程序设计(第2版)添加组件到内容窗格添加组件到内容窗格添加组件到内容窗格添加组件到内容窗格的方法的方法的方法的方法1 1【方法1】使用JFrame类的getContentPane方法首先获得当前JFrame窗体的ContentPane对象,然后调用ContentPane对象的add方法添加GUI组件实现格式如下:Container contentPane=.getContentPane();contentPane.add();有有2 2种方法将种方法将GUIGUI组件添加到组件添加到JFrameJFrame对象的内容窗格中对象的内容窗格中:32清华大学出版社Java程序设计(第2版)添加组件到内容窗格添加组件到内容窗格添加组件到内容窗格添加组件到内容窗格的方法的方法的方法的方法2 2【方法2】先生成一个新的容器对象作为JFrame窗体的内容面板:通常选用面板组件JPanel担当此任,JPanel本身是容器组件,可以容纳其他的GUI元素再设置容器对象的布局管理器等属性,并使用add方法将组件添加到JPanel对象中然后使用JFrame类的setContentPane方法将JPanel对象设置为JFrame窗体的内容面板setContentPane方法的原型定义为:public void setContentPane(ContainercontentPane)33清华大学出版社Java程序设计(第2版)创创创创建建建建JFrameJFrame窗口的步窗口的步窗口的步窗口的步骤骤骤骤31用语句“import javax.swing.*;”导入Swing包,添加以下三条导入包的语句:import java.awt.*;import java.awt.event.*;import javax.swing.event.*;32使用构造方法创建JFrame窗口 34清华大学出版社Java程序设计(第2版)创建创建创建创建JFrameJFrame窗口的步骤窗口的步骤窗口的步骤窗口的步骤(续续续续)33设置窗口大小、位置、标题、图标等属性34设置窗口关闭后的响应行为取得ContentPane对象,或者为JFrame窗体创建一个ContentPane对象35为ContentPane对象设置布局管理器及其他属性36 35清华大学出版社Java程序设计(第2版)创建创建创建创建JFrameJFrame窗口的步骤窗口的步骤窗口的步骤窗口的步骤(续续续续)37使用add()方法把组件加入到ContentPane对象中;如果ContentPane对象是新创建的容器组件,还需要使用setContentPane方法将其设置为JFrame窗体的内容窗格创建后的窗口默认不可见,需要调用setVisible方法或show方法使其可见38 36清华大学出版社Java程序设计(第2版)关闭关闭关闭关闭窗体的窗体的窗体的窗体的操作操作操作操作JFrame类提供了关闭窗体的setDefaultCloseOperation方法该方法的原型如下:public void setDefaultCloseOperation(int operation);其中参数operation,为关闭时所使用的行为控制选项 37清华大学出版社Java程序设计(第2版)控制选项控制选项控制选项控制选项operationoperationoperationoperation控制选项控制选项operationoperation可用的枚举常量为:可用的枚举常量为:33HIDE_ON_CLOSE:调用注册给当前程序的事件处理方法后将自动隐藏该窗体。该选项为默认选项DISPOSE_ON_CLOSE:调用执行注册给当前程序的事件处理方法后自动隐藏并释放该窗体34EXIT_ON_CLOSE:执行退出应用程序后的默认窗口关闭操作31DO_NOTHING_ON_CLOSE:不执行任何操作,由注册给当前程序的WindowListener对象通过windowClosing方法去处理该操作32 38清华大学出版社Java程序设计(第2版)框架窗体框架窗体框架窗体框架窗体JFrameJFrame示例示例 39清华大学出版社Java程序设计(第2版)面面板类板类JPanel JPanel Swing的JPanel与AWT的Panel的共有特征是都不能移动、放大、缩小或关闭;Panel组件没有无边框,JPanel则可以添加边框JPanel不能作为图形界面的顶端容器,只能作为一个中间容器组件,被加入到JFrame或JApplet等顶层容器中,用于提供空间,将小型的轻量级组件组合在一起JPanel 的缺省布局管理器方案为 FlowLayout。它的大小由包含在JPanel中的其他组件及顶层窗口的布局管理策略所共同决定。JPanel组件可以相互嵌套,即JPanel组件可以加入到另一个JPanel对象内 40清华大学出版社Java程序设计(第2版)SwingSwing的基本组件的基本组件Swing还包含一些基本组件,它们是搭建GUI程序界面的基本元素。这些基本组件不像容器组件,不允许在自身区域内放置其他组件,而自己必须放置在容器中,并随着容器窗口一起显示。基本组件的位置、大小与排列状况通常会受到容器对象所采用的布局管理方案的影响Swing的基本组件类由JComponent继承而来,类名一律以英文字母“J”为首字母。这些组件类位于javax.swing包中,GUI应用程序要使用它们,必须先用“import javax.swing.*;”语句导入该包中的类 41清华大学出版社Java程序设计(第2版)SwingSwing组件类的继承结构组件类的继承结构 42清华大学出版社Java程序设计(第2版)SwingSwing主要的主要的基本基本组件组件 43清华大学出版社Java程序设计(第2版)标签标签标签标签组件组件组件组件JLabelJLabelJLabelJLabelJlabel是静态组件,能够显示文字和图像图标,而不能够对显示内容进行编辑操作JLabel类主要的构造方法如下表所示:44清华大学出版社Java程序设计(第2版)标签标签标签标签JLabelJLabel常用的方法常用的方法常用的方法常用的方法setIcon(Icon image):设置标签显示的图像图标33setToolTipText(String text):设置当鼠标停留在 标签上时显示的提示信息34getText():获取标签显示的文本31setText(String text):设置标签显示的文本32 45清华大学出版社Java程序设计(第2版)命令按钮命令按钮组件组件JButtonJButton Swing的JButton又称为命令按钮或Swing按钮,简称按钮。可以给按钮添加图像图标,指定快捷键以及设置按钮的对齐方式,还可以将多个不同的图像图标分配给同一个按钮,以区分按钮所处的不同的操作状态JButton类重要的方法与JLabel类的极为近似 46清华大学出版社Java程序设计(第2版)JButtonJButton常用的方法常用的方法setEnabled(Boolean flag):设置按钮的有效性35setToolTipText(String text):设置当鼠标 停留在按钮上时显示的提示信息33setMnemonic(char ch):设置按钮的快捷键字符34setText(String text):设置按钮的标签31setIcon(Icon image):设置按钮的图像图标32 47清华大学出版社Java程序设计(第2版)文本框文本框文本框文本框组件组件组件组件JTextFieldJTextFieldJTextField组件称为文本框,该组件用来定义一个可以输入与编辑单行文本的矩形框JTextField类主要的构造方法如下表所示:48清华大学出版社Java程序设计(第2版)文本框文本框文本框文本框组件组件组件组件常用的常用的常用的常用的方法方法方法方法setEnabled(Boolean flag):设置按钮的有效性35setEditable():设置文本框是否可编辑33setHorizontalAlignment():设置文本框 的水平对齐方式34getText():获取文本框显示的文本内容31setText():设置文本框显示的文本内容32 49清华大学出版社Java程序设计(第2版)文本区文本区文本区文本区组件组件组件组件JTextAreaJTextAreaJTextArea组件称为文本区,该组件用来定义一个可以输入多行文本内容的矩形区域。通过将文本区组件加入到滚动窗格(JScrollPane)内,或者为文本区组件绑定滚动条(ScrollBar)等手段,能够实现让文本区出现水平、垂直滚动条,使视图区域有限的文本区,通过操作滚动条,而将无法全部显示出来的文本内容进行上下翻动与左右滚动 50清华大学出版社Java程序设计(第2版)文本文本文本文本区组件区组件区组件区组件常用的常用的常用的常用的方法方法方法方法setEnabled(Boolean flag):设置按钮的有效性35insert():在文本区指定的位置处插入指定的字符串33getLineWrap():获取并返回用来控制文本区 内容是否自动折行的逻辑值34setLineWrap():设置逻辑值,控制文本区 的内容是否自动折回下一行31append():在当前内容尾追加指定的字符串32 51清华大学出版社Java程序设计(第2版)文本文本文本文本区区区区JTextAreaJTextArea示例示例示例示例 52清华大学出版社Java程序设计(第2版)密码框密码框密码框密码框组件组件组件组件JPasswordField JPasswordField JPasswordField类是JTextField类的子类,该类对象允许输入或编辑单行文本,但是文本在显示时被其他字符所替代,从而屏蔽掉用户输入的重要信息,起到加密的作用JPasswordField组件常用于密码输入等场合 53清华大学出版社Java程序设计(第2版)密码框密码框密码框密码框组件组件组件组件常用的常用的常用的常用的方法方法方法方法setEnabled(Boolean flag):设置按钮的有效性35getEchoChar():获取用来替代实际字符的回显字符33getPassword():以字符数组的形式获取组件内容31setEchoChar():设置用来替代实际字符的回显字符32 54清华大学出版社Java程序设计(第2版)选择选择选择选择类组件类组件类组件类组件选择类组件包括单选按钮JRadioButton与复选框JCheckBox两种组件类JRadioButton与JCheckBox有两种互斥状态:“选中”状态和“未选中”状态,或者ON状态和OFF状态 55清华大学出版社Java程序设计(第2版)单选单选单选单选按钮按钮按钮按钮组件组件组件组件JRadioButtonJRadioButtonJRadioButtonJRadioButton单选按钮JRadioButton组件默认外观是一个带有文本标签的小圆形。当单选按钮处于选中状态时,圆形为实心;取消选中时,圆形变为空心单选按钮可以包含文本标签,也可以包含图标。文本标签用来表明选项代表的意义;图标用更直观的小图像表明选项的功能 56清华大学出版社Java程序设计(第2版)复选框组件复选框组件复选框组件复选框组件JCheckBoxJCheckBoxJCheckBoxJCheckBoxJCheckBox组件称为复选框,其默认外观是一个带有文本标签的小方框。复选框处于选中状态时,方框中会出现小对钩;取消选中时,对钩消失复选框可以进行多重选择,复选框的选取或取消操作,均可使用鼠标单击来完成:首次单击某一复选框选取该选项,再次单击,则取消选取。建立复选框组件时需要使用标签来表明该复选框的含义,标签在创建复选框的构造方法中进行设置 57清华大学出版社Java程序设计(第2版)单选按钮和复选框共同单选按钮和复选框共同单选按钮和复选框共同单选按钮和复选框共同的构造方法的构造方法的构造方法的构造方法 58清华大学出版社Java程序设计(第2版)单选按钮和复选框共同单选按钮和复选框共同单选按钮和复选框共同单选按钮和复选框共同的方法的方法的方法的方法setEnabled(Boolean flag):设置按钮的有效性35setSelectedIcon(Icon selectedIcon):为某个 选择组件设置被选中时显示的图标图像33setSelectedIcon():获取某个选择组件 被选中时显示的图标图像34isSelected():检查某个选择组件是否被选中,获取并返回选择组件当前的状态值31setSelected(boolean b):设置某个选择组件的 状态值,即控制组件是否处于选中状态32 59清华大学出版社Java程序设计(第2版)选择类组件选择类组件选择类组件选择类组件示例示例示例示例 60清华大学出版社Java程序设计(第2版)ButtonGroupButtonGroupButtonGroupButtonGroup类类类类为实现一组相关单选按钮的互斥性,有时需要将这些按钮加入到一个ButtonGroup对象中。ButtonGroup类对一组相关按钮的选中或未选中状态进行管理,它能够确保在任一时刻最多只能有一个按钮处于选中状态ButtonGroup能够对由AbstractButton抽象类派生出的某些子类对象起作用,这些子类对象必须具有“选中/未选中”两种状态对于刚加入到ButtonGroup对象中的按钮而言,其初始状态皆为未选中状态 61清华大学出版社Java程序设计(第2版)ButtonGroupButtonGroupButtonGroupButtonGroup类类类类的主要方法的主要方法remove():从ButtonGroup对象中删除一个按钮33ButtonGroup():构造方法,创建ButtonGroup对象31add():用来将一组按钮加入到ButtonGroup对象中32 62清华大学出版社Java程序设计(第2版)列表框组件列表框组件列表框组件列表框组件JListJListJListJListSwing的列表类组件包括列表框JList和组合框JComboBoxJList组件在一列或多列中显示出一组项目列表,用户可以从中选择一项或多项。JList类主要的构造方法如下表所示:63清华大学出版社Java程序设计(第2版)列表框列表框列表框列表框组件的选择模式组件的选择模式组件的选择模式组件的选择模式JList为用户提供了三种选择模式,分别与三个符号常量相对应,这三个符号常量由接口ListSelectionModel定义JList的三种选择模式与对应常量分别为:MULTIPLE_INTERVAL_SELECTION:对应为多区间选择33SINGLE_INTERVAL_SELECTION:对应为单一区间选择32SINGLE_SELECTION:对应为单一选择31 64清华大学出版社Java程序设计(第2版)建立列表框的步骤建立列表框的步骤 建立JList对象前,首先要建立列表框所包含的选项条目31 如果列表框比较长,而显示屏幕比较小,可以设置 列表中显示的行数,同时使用滚动条32 为列表组件注册列表选择监听器对象:courseList.addListSelectionListener(new courseListener();33 65清华大学出版社Java程序设计(第2版)建立列表框的建立列表框的步骤步骤(续续)在监听器对象所属的类中实现valueChanged()方法 用getSelectedValues()方法获取用户所选择的列表项目;用getSelectedIndices()方法获取用户所选顶目所对应的索引号3435 66清华大学出版社Java程序设计(第2版)组合列表框组件组合列表框组件组合列表框组件组合列表框组件JComboBox JComboBox JComboBox JComboBox 组合框JComboBox是文本域和下拉列表的组合,只显示最前面的一项或被用户选中的某一项新建一个有内容的组合框,既可以通过数组或向量方式,也可以通过添加选项的方式来完成。可以用setEditable方法对组合框的被编辑属性可以进行设置JComboBox类提供了多个编辑、修改列表项的方法,如插入表项方法insertItermAt、删除表项方法removeItemAt等当用户在组合框中选中了一个或多个表项后,调用getSelectedItem方法或getSelectedObjects方法,能够获取当前被选中表项的数据 67清华大学出版社Java程序设计(第2版)组合组合组合组合列表框重要的方法列表框重要的方法列表框重要的方法列表框重要的方法setEnabled(Boolean flag):设置按钮的有效性35getItemAt:获得指定索引对应的列表项34getSelectedItem:获得当前选中的列表项35addItem:向选项列表尾部添加一个指定的数据项31insertItemAt:在选项列表的指定位置处插入 一个指定的数据项32getSelectedObjects:获得当前选中的多个 列表项的内容数组33 68清华大学出版社Java程序设计(第2版)组合组合组合组合列表框重要的方法列表框重要的方法列表框重要的方法列表框重要的方法(续续续续)setEnabled(Boolean flag):设置按钮的有效性35getItemCount:获得组合框所有列表项的数目值38removeAllItems:清除组合框中所有的列表项39setEditable:设置组合框是否为可编辑模式36getSelectedIndex:获得当前选中的列表项的索引值37removeItemAt:删除指定索引对应的列表项3AremoveItem:删除指定内容对应的列表项3B 69清华大学出版社Java程序设计(第2版)组合列表框示例组合列表框示例组合列表框示例组合列表框示例 70清华大学出版社Java程序设计(第2版)列表框与列表框与列表框与列表框与组合框组合框组合框组合框示例示例示例示例 71清华大学出版社Java程序设计(第2版)布局管理器布局管理器(Layout Manager)(Layout Manager)布局管理器是Java系统预先定义的一组类,这些类根据一定的算法与策略,对容器中的组件进行自动排列,并依据容器组件尺寸与位置的变化,对组件的排列与布局进行相应的调整,使得各组件的排放格局尽可能有序、合理、协调与美观 72清华大学出版社Java程序设计(第2版)AWTAWT的布局管理器的布局管理器java.awt包提供了多种布局管理器类,每种布局管理器都封装了与组件对象的排列和调整有关的属性与方法AWT常用的布局管理器类的名称和特性如下表所示:73清华大学出版社Java程序设计(第2版)AWTAWT容器的布局策略容器的布局策略 容器对象创建成功后自动获取一个系统默认布局管理器可用setLayout(newLayoutObject)方法为容器对象重新指定一个不同于默认的布局管理器;方法中的参数应该是一个特定布局管理器类的实例对象也可以使用setLayout(null)方法中止标准的布局管理器,从而让用户能够以手工方式设置组件的大小或位置在Java的GUI界面设计中,布局控制是通过为容器设置布局编辑器来实现的 74清华大学出版社Java程序设计(第2版)边界布局边界布局BorderLayout BorderLayout BorderLayout将整个容器空间划分为上、下、左、右和中间五个区域,将五个区域分别命名为North、South、West、East、Center,分别用BorderLayout类定义的五个静态符号常量:NORTH、SOUTH、WEST、EAST及CENTER来标识它们,其中每个区域中至多可放置一个组件 75清华大学出版社Java程序设计(第2版)边界布局边界布局的空间划分的空间划分 76清华大学出版社Java程序设计(第2版)边界布局的重要方法边界布局的重要方法使用无参数构造函数创建的BorderLayout,规定各组件间的横、纵间距都为0。如果希望使用大于0的间距,则可以使用BorderLayout的另一个构造函数创建它:BorderLayout(int hgap,int vgap);BorderLayout只能指定五个区域位置。如果容器中需要加入超过五个组件,就必须使用容器的嵌套或改用其他的布局策略。加入组件使用的命令如下:add(,);77清华大学出版社Java程序设计(第2版)网格布局网格布局GridLayout GridLayout GridLayout管理器将整个容器空间划分为m行n列的规则网格,每个网格单元都是一个大小相同的矩形区域,每个区域可以摆放一个组件对象。用add方法向实施了GridLayout方案的容器中添加GUI组件时,系统按组件添加的顺序,从左到右,先将它们依次安置到第一行的各个网格单元内;第一行占满后,由上而下,再依次安排第二行,第三行,直到所有的组件全部安排完毕 78清华大学出版社Java程序设计(第2版)网格布局网格布局的使用步骤的使用步骤31创建GridLayout对象作为布局编辑器。指定划分网格的行数和列数,并使用容器的setLayout方法为容器设置这个布局编辑器:setLayout(new GridLayout(行数,列数)32调用容器的方法add()将组件加入容器。组件填入容器的顺序将按照第一行第一个、第一行第二个第一行最后一个、第二行第一个最后一行最后一个进行。每个网格中都必须填入组件,如果希望某个网格为空白,可以为它加入一个空的标签:add(new Label()79清华大学出版社Java程序设计(第2版)网格布局示例网格布局示例 80清华大学出版社Java程序设计(第2版)流式布局流式布局FlowLayout FlowLayout FlowLayout是容器Panel和它的子类Applet缺省使用的布局编辑策略,如果不专门为Panel或Applet指定布局编辑器,则它们就使用FlowLayout的布局策略FlowLayout对应的布局策略非常简单。遵循这种策略的容器将其中的组件按照加入的先后顺序从左向右排列,一行排满之后就下转到下一行继续从左至右排列,每一行中的组件都居中排列;在组件不多时,使用这种策略非常方便,但是当容器内的GUI元素增加时,就显得高低参差不齐 81清华大学出版社Java程序设计(第2版)流式布局流式布局的构造方法的构造方法创建创建FlowLayoutFlowLayout类对象可使用下面的两种构造方法:类对象可使用下面的两种构造方法:31FlowLayout(int align,int hgap,int vgap);参数align指定每行组件的对齐方式,可以取三个静态常量LEFT,CENTER,RIGHT之一;参数hgap和参数vgap分别指定各组件间的横向和纵向间的以像素为单位的间距32FlowLayout(int align);参数align指定每行组件的对齐方法,组件间的横纵间距都固定为5个像素;无参数的构造函数创建的FlowLayout对象,其对齐方式为CENTER常量指定的居中方式 82清华大学出版社Java程序设计(第2版)流式布局示例流式布局示例 83清华大学出版社Java程序设计(第2版)卡片布局卡片布局CardLayout CardLayout CardLayout的容器表面上可容纳多个组件,但实际上同一时刻容器只能选一个来显示,每次只能显示最上面的一张,被显示组件将占据所有容器空间 84清华大学出版社Java程序设计(第2版)卡片布局卡片布局的使用步骤的使用步骤31创建CardLayout对象:Mycard=new CardLayout();32使用容器的setLayout方法为容器设置布局编辑器:setLayout(Mycard);33调用容器的方法add将组件加入容器,同时为组件分配一个字符串的名字,以便布局编辑器根据这个名字调用显示这个组件:add(字符串,