第9章 图形用户界面(1).ppt
第第9章章 图形用户界面图形用户界面()在在Java的图形化界面设计中的图形化界面设计中,主要会用到主要会用到AWT(Abstract Window Toolkit)和和Swing包包.AWT是建立图形用户界面的工具集是建立图形用户界面的工具集,但有一但有一定缺陷定缺陷,主要用于早期的图形用户界面的开发主要用于早期的图形用户界面的开发.使用使用AWT开发出来的用户界面并不是完全开发出来的用户界面并不是完全”平平台独立台独立”.为了解决为了解决AWT的问题的问题,Sun公司开发出公司开发出Swing包包,它是一种强化的图形界面设计工具它是一种强化的图形界面设计工具,是基于是基于AWT的的,所以称其为扩展包所以称其为扩展包.它使用一种它使用一种全新的方式绘制图形组件全新的方式绘制图形组件,运行速度比运行速度比AWT慢慢一些一些,但能够做到完全的但能够做到完全的”平台独立平台独立”.n布局管理器布局管理器nJPanel类类nJDialog类类nJFrame类和类和JWindow类类n事件处理事件处理布局管理器布局管理器 布局是指布局是指Java组件在版面上摆放的次序关系。组件在版面上摆放的次序关系。Java中中提供了专门用于组件布局的管理工具提供了专门用于组件布局的管理工具布局管理器。布布局管理器。布局管理器也是由一些类来实现的,包括局管理器也是由一些类来实现的,包括FlowLayout类、类、BorderLayout类、类、GridLayout类和类和CardLayout类。类。1.FlowLayout顺序布局管理器顺序布局管理器 FlowLayout也称为流式布局管理器也称为流式布局管理器,常用于常用于RadioButton或或CheckBox等组件的排列,它将组件逐个放置在容器的等组件的排列,它将组件逐个放置在容器的一行中,一行满后另起一行。一行中,一行满后另起一行。FlowLayout的构造函数包括:的构造函数包括:FlowLayout()建立默认布局建立默认布局FlowLayout(int align)设置对齐方式设置对齐方式,对齐常量包括对齐常量包括FlowLayout.LEFT,FlowLayout.RIGHT,FlowLayout.CENTERFlowLayout(int align,int hgap,int vgap)2.BorderLayout边界布局管理器边界布局管理器 BorderLayout将容器分为东、西、南、北、中将容器分为东、西、南、北、中5个区个区域域,按照上北下南左西右东的格局分布按照上北下南左西右东的格局分布,各用一个单词标识各用一个单词标识:东:东:EAST南:南:SOUTH西:西:WEST北:北:NORTH中:中:CENTER 放置组件时放置组件时,必须从必须从5中方向中选择一种以靠近窗口的中方向中选择一种以靠近窗口的边界边界,最多放最多放5个组件个组件,少于少于5个时个时,没有放置组件的区域被没有放置组件的区域被相邻的区域占用相邻的区域占用,Frame和和Dialog的默认布局管理器就是的默认布局管理器就是BorderLayout。例:例:BorderLayoutDemo.java3.GridLayout网格布局管理器网格布局管理器 GridLayout内的组件按照网格状布局内的组件按照网格状布局,即把容器面板根即把容器面板根据行数和列数分成同样大小的网格单元据行数和列数分成同样大小的网格单元,每个网格单元可每个网格单元可容纳一个组件容纳一个组件,并且该组件填满整个网格单元并且该组件填满整个网格单元.GridLayout()生成一个单列的网格布局生成一个单列的网格布局GridLayout(int rows,int columns)GridLayout(int rows,int columns,int hGap,int vGap)可以设置组件之间的水平和垂直间隔可以设置组件之间的水平和垂直间隔例:例:GridLayoutExample.javaJPanel类类 JPanel类也称为面板,专门用于放置组件,而本身又类也称为面板,专门用于放置组件,而本身又可以作为一个独立的组件添加到窗口中。在可以作为一个独立的组件添加到窗口中。在JPanel类之类之间还可以实现嵌套,将小的面板放置到大的面板中。间还可以实现嵌套,将小的面板放置到大的面板中。JPanel类的构造函数:类的构造函数:JPanel();JPanel(boolean isDbBuf);JPanel(LayoutManager lay);JPanel(LayoutManager lay,boolean isDbBuf);例:例:JPanelDemo.java,在,在JPanel面板中绘制圆和矩形面板中绘制圆和矩形,并且可通过控制按钮在面板中添加他们并且可通过控制按钮在面板中添加他们JDialog类类 JDialog类提供了类提供了Java中对话框窗口设计的方法,对中对话框窗口设计的方法,对话框窗口也属于标准窗口的一部分,或者说对话框窗口话框窗口也属于标准窗口的一部分,或者说对话框窗口是在标准窗口中进行某些操作时弹出来的,所以在创建是在标准窗口中进行某些操作时弹出来的,所以在创建对话框窗口时要指定当前对话框窗口的父窗口。对话框窗口时要指定当前对话框窗口的父窗口。JDialog类的构造函数:类的构造函数:JDialog();JDialog(Dialog owner);JDialog(Dialog owner,String title);JDialog(Frame owner);JDialog(Frame owner,String title);owner代表当前要创建的对话框窗口的父窗口代表当前要创建的对话框窗口的父窗口,Frame类是类是AWT包中提供的专门用于创建窗口框架的类。包中提供的专门用于创建窗口框架的类。使用使用JDialog类创建对话框窗口时,一般也是在该类的类创建对话框窗口时,一般也是在该类的基础上创建它的子类,在子类中调用其他方法创建对话基础上创建它的子类,在子类中调用其他方法创建对话框窗口。框窗口。例:例:JDialogDemo.java 创建对话框窗口,在其中添加标创建对话框窗口,在其中添加标签和按钮信息。签和按钮信息。JFrame类和类和JWindow类类 JFrame和和JWindow都用来创建窗口,但都用来创建窗口,但JFrame可以可以用来创建一个有标题栏,最大化,最小化按钮的标准窗用来创建一个有标题栏,最大化,最小化按钮的标准窗口,而口,而JWindow创建的窗口没有标题栏和边框,也没有创建的窗口没有标题栏和边框,也没有最大,最小化按钮。最大,最小化按钮。JFrame类的构造函数:类的构造函数:JFrame();();JFrame(String title););JWindow类的构造函数:类的构造函数:JWindow();();JWindow(Frame owner););JWindow(Window owner););JWindow类中常用方法与类中常用方法与JFrame类基本相同,但因其没有菜类基本相同,但因其没有菜单,所以没有菜单设计的方法,也没有关闭操作的处理方法。单,所以没有菜单设计的方法,也没有关闭操作的处理方法。例:例:JFrameDemo.java/JWindowDemo.java事件处理事件处理 图形用户界面通过事件机制响应用户和程序的交互。图形用户界面通过事件机制响应用户和程序的交互。产生事件的组件称事件源。如当用户单击某个按钮时就产生事件的组件称事件源。如当用户单击某个按钮时就会产生动作事件,该按钮就是事件源。要处理产生的事会产生动作事件,该按钮就是事件源。要处理产生的事件,需要在特定的方法中编写处理事件的程序。这样,件,需要在特定的方法中编写处理事件的程序。这样,当产生某种事件时就会调用处理这种事件的方法,从而当产生某种事件时就会调用处理这种事件的方法,从而实现用户与程序的交互,这就是图形用户界面事件处理实现用户与程序的交互,这就是图形用户界面事件处理的基本原理。的基本原理。事件源对象事件源对象监听器监听器注册注册传送事件对象传送事件对象引入事件处理机制后的编程方法:引入事件处理机制后的编程方法:在程序开始应加入在程序开始应加入import java.awt.event.*语句。语句。设置事件监听者:设置事件监听者:事件源对象事件源对象.addXXListener(XXListener代表某种事件监代表某种事件监听者听者)。事件监听者所对应的类实现事件所对应的接口事件监听者所对应的类实现事件所对应的接口XXListener,并重写接口中的全部方法。,并重写接口中的全部方法。例:按钮单击事件的处理,例:按钮单击事件的处理,ButtonDemo.java监听器类通常用内部类实现,好处:监听器类通常用内部类实现,好处:1.可以方便的访问包装类的成员可以方便的访问包装类的成员2.可以更清楚地组织逻辑,防止其他类访问监听器类可以更清楚地组织逻辑,防止其他类访问监听器类例:文本框事件处理例:文本框事件处理,TextFieldDemo.java事件适配器事件适配器 为了方便,为了方便,Java为那些声明了多个方法的为那些声明了多个方法的Listener接接口提供了一个对应的适配器口提供了一个对应的适配器(Adapter)类,在该类中实现类,在该类中实现了对应接口的所有方法,只是方法体为空。了对应接口的所有方法,只是方法体为空。接口以及所对应的适配器的名称:接口以及所对应的适配器的名称:例:例:WindowAdapterDemo.java MouseAdapterDemo.java