《教学课件第九章 GUI界面设计.ppt》由会员分享,可在线阅读,更多相关《教学课件第九章 GUI界面设计.ppt(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、PPT模板下载:/moban/ 行业PPT模板:/hangye/ 节日PPT模板:/jieri/ PPT素材下载:/sucai/PPT背景图片:/beijing/ PPT图表下载:/tubiao/ 优秀PPT下载:/xiazai/ PPT教程: /powerpoint/ Word教程: /word/ Excel教程:/excel/ 资料下载:/ziliao/ PPT课件下载:/kejian/ 范文下载:/fanwen/ 试卷下载:/shiti/ 教案下载:/jiaoan/ 字体下载:/ziti/ 教学课件第九章 GUI界面设计LOGO Company Logo在本章中,我们将会学到:39.3S
2、wing组件介绍组件介绍 39.1GUI组件的构造和使用组件的构造和使用 39.2布局管理器布局管理器 Company Logo9.1 GUI组件 9.1.1抽象窗口工具包(抽象窗口工具包(AWT:Abstract Window Toolkit) 抽象窗口工具包(抽象窗口工具包(Abstract Window Toolkit)简称:)简称:AWT,是为,是为Java程序提供图形用户界面(程序提供图形用户界面(Graphics User Interface :GUI)的一组)的一组API。主要功能包括:用户界面组件、界面布局设计和管理、图形图像处理、。主要功能包括:用户界面组件、界面布局设计和管
3、理、图形图像处理、事件处理等。事件处理等。下面是下面是AWT包中部分重要类和子包:包中部分重要类和子包:1)java.awt.Component :抽象类,是:抽象类,是AWT包所有组件类的超类;包所有组件类的超类;2)java.awt.datatransfer :提供数据传输和剪贴板功能的包:提供数据传输和剪贴板功能的包3)java.awt.dnd :提供用户拖曳操作功能的包:提供用户拖曳操作功能的包4)java.awt.event :提供事件处理功能的包:提供事件处理功能的包5)java.awt.image :提供图像处理功能的包:提供图像处理功能的包6)java.awt.peer :提供
4、:提供AWT程序运行所需界面的同位体运行程序运行所需界面的同位体运行7)javax.swing :Swing组件包组件包组件是构成组件是构成GUI的基本元素,的基本元素,Component类是类是AWT包所有组件类的超类,它为其它子类提供了很多组件设计功包所有组件类的超类,它为其它子类提供了很多组件设计功能,如:位置、大小、字体、颜色、同位体等。能,如:位置、大小、字体、颜色、同位体等。“同位体同位体”(peer)是个比较难理解的概念,简单来)是个比较难理解的概念,简单来讲,同位体是对窗体界面系统的抽象。当程序员调用讲,同位体是对窗体界面系统的抽象。当程序员调用AWT对象时,调用被转发到该对象
5、所对应的一个对象时,调用被转发到该对象所对应的一个Peer上,再由上,再由Peer调用本地对象方法,完成对象的显示。调用本地对象方法,完成对象的显示。 图图9-1表达了一个表达了一个AWT的的Frame组件是如何通过同位体显示出来的。组件是如何通过同位体显示出来的。 并且,从同位体的使用机制来看,并且,从同位体的使用机制来看,AWT包组件的显示要受到本地平台的影响,因此现在大多使用包组件的显示要受到本地平台的影响,因此现在大多使用Swing包来代替包来代替AWT包。除包。除AWT包之外,包之外,Swing包也提供了包也提供了GUI设计功能,它们都是设计功能,它们都是Java基本类库基本类库(J
6、FC:Java Foundation Class)的一部分,不过)的一部分,不过Swing提供了比提供了比AWT包更强大的功能,且具备完全包更强大的功能,且具备完全跨平台的能力,跨平台的能力,Swing包将在后面章节介绍。包将在后面章节介绍。AWT作为最基本的组件包,掌握了它有助于学习其它组作为最基本的组件包,掌握了它有助于学习其它组件功能,因此还是有详细介绍的必要。件功能,因此还是有详细介绍的必要。 图图9-2是是Windows平台中的部分平台中的部分AWT组件。组件。 图图9-3描述了描述了AWT包中组件类的层次关系。包中组件类的层次关系。Company Logo图图9-1 AWT组件的同
7、位体调用机制组件的同位体调用机制 FrameAWTComponentPeerComponentPeerFrame系统系统平台平台显示显示系统系统Company Logo图图9-2 AWT组件外观组件外观 TextFieldCheckboxTextAreaLabelChoiceListCheckboxBCompany Logo图图9-3 AWT包中组件类的层次包中组件类的层次 CanvasButtonScrollbarListTextComponentCheckboxChoice LabelContainer容器容器组件组件符号表示:符号表示:MenuComponentObjectCompone
8、ntMenuBarMenuItemMenuTextFieldTextAreaScrollPanelPanelWindowAppletFrameDCompany Logo9.1.2 GUI组件与容器 表表9-1 Component组件类的常用方法组件类的常用方法 常用方法常用方法功能功能addXXXListeneraddXXXListener( (XXXListenerXXXListener l) l)添加指定的添加指定的XXX监听器,接收此组件发出的事件监听器,接收此组件发出的事件setBackgroundsetBackground( (ColorColor c) c)设置组件的背景色设置组件
9、的背景色getBackgroundgetBackground()()获得组件的背景色获得组件的背景色setForegroundsetForeground( (ColorColor c) c)设置组件的前景色设置组件的前景色getForegroundgetForeground()()获得组件的前景色获得组件的前景色setFontsetFont( (FontFont f) f)设置组件的字体设置组件的字体getFontgetFont()()获得组件的字体获得组件的字体getSizegetSize()()返回组件的大小返回组件的大小getWidthgetWidth()()返回组件的当前宽度返回组件的
10、当前宽度getHeight()getHeight()返回组件的当前高度返回组件的当前高度getXgetX()()返回组件原点的当前返回组件原点的当前 x 坐标坐标getYgetY()()返回组件原点的当前返回组件原点的当前 y 坐标坐标paintpaint( (GraphicsGraphics g) g)绘制此组件绘制此组件repaintrepaint()()重绘此组件重绘此组件requestFocusrequestFocus()()请求此组件获得输入焦点,并且此组件的顶层组件成为获得焦点的请求此组件获得输入焦点,并且此组件的顶层组件成为获得焦点的 WindowsetBoundssetBoun
11、ds(int x, int y, int width, int height)(int x, int y, int width, int height)移动组件并调整其大小移动组件并调整其大小setEnabledsetEnabled(boolean b)(boolean b)根据参数根据参数 b 的值启用或禁用此组件的值启用或禁用此组件setVisiblesetVisible(boolean b)(boolean b)根据参数根据参数 b 的值显示或隐藏此组件的值显示或隐藏此组件toStringtoString()()返回此组件及其值的字符串表示形式返回此组件及其值的字符串表示形式update
12、update( (GraphicsGraphics g) g)更新组件更新组件Company Logo一、一、AWT容器组件容器组件1、窗体(框架)(、窗体(框架)(Frame)Frame类是类是Window类的子类,它具备边框,标题栏,系统菜单,类的子类,它具备边框,标题栏,系统菜单,最大、最小化按钮,是一个具备完全功能的窗体。最大、最小化按钮,是一个具备完全功能的窗体。它的构造方法如下:它的构造方法如下:vFrame(); 默认构造方法,创建没有标题的窗体默认构造方法,创建没有标题的窗体vFrame(String title);创建以创建以title为标题栏文字的窗体其主要成为标题栏文字的
13、窗体其主要成员方法如下:员方法如下:vsetSize(int width,int height);为窗体设置大小,为窗体设置大小,width为窗体为窗体宽度,宽度,height为高度为高度vpack();以紧凑组件的方式设置窗体大小以紧凑组件的方式设置窗体大小vsetTitle(String title);为窗体设置标题为窗体设置标题vsetVisible(boolean b);为窗体设置可见性,默认时窗体为不为窗体设置可见性,默认时窗体为不可见。可见。例例9-1:创建简单窗体:创建简单窗体 例例9-2:创建简单窗体另一种形式:创建简单窗体另一种形式 Company Logo例例9-1:创建简
14、单窗体:创建简单窗体import java.awt.*;public class FrameDemo extends Frame public FrameDemo(String title) /自定义构造方法,自定义构造方法,title为窗体标题为窗体标题 super(title); /调用超类的带参数调用超类的带参数 的构造方法的构造方法 this.setSize(200,100); setVisible(true); public static void main(String args) new FrameDemo(简单窗体简单窗体); 【运行结果运行结果】 (显示一个简单的窗口,如图所
15、示。)(显示一个简单的窗口,如图所示。) Company Logo例例9-2:创建简单窗体另一种形式:创建简单窗体另一种形式import java.awt.*;public class FrameDemo extends Frame Frame f=new Frame(); Label la1=new Label(您好,这是您好,这是Label组件!组件!); public FrameDemo() f.add(la1); f.setTitle(简单窗体简单窗体); f.pack(); f.setVisible(true); public static void main(String args
16、) new FrameDemo(); 【运行结果运行结果】(同样显示一个简单的窗口,内部包含一个标签组件,如图所示。)(同样显示一个简单的窗口,内部包含一个标签组件,如图所示。) Company Logo2、对话框(、对话框(Dialog)对话框是可以接受用户输入的弹出式窗体,它也是一种带边框的容器,与对话框是可以接受用户输入的弹出式窗体,它也是一种带边框的容器,与Frame不不同的是对话框依赖于其它的窗体,当窗体最小化时,对话框也会随之最小化。同的是对话框依赖于其它的窗体,当窗体最小化时,对话框也会随之最小化。对话框可分为模态对话框(对话框可分为模态对话框(model)和非模态对话框()和非
17、模态对话框(modelless),其中),其中模态对话框只能响应对话框范围内的事件,对话框外部的事件则不能响应;模态对话框只能响应对话框范围内的事件,对话框外部的事件则不能响应;而非模态对话框则不受这个限制。所以模态对话框通常用于注册窗口或而非模态对话框则不受这个限制。所以模态对话框通常用于注册窗口或“另另存为存为”窗口等必须等用户首先响应的情况。窗口等必须等用户首先响应的情况。Dialog的常用构造方法如下:的常用构造方法如下:Dialog(Frame frm);创建一个不可见、无标题的非模式的对话框,相关联的窗体是;创建一个不可见、无标题的非模式的对话框,相关联的窗体是框架类的对象框架类的
18、对象frm。vDialog(Frame frm, String title, boolean modal);创建一个不可见、以;创建一个不可见、以title内容为标题的对话框,相关联的窗体是框架类的对象内容为标题的对话框,相关联的窗体是框架类的对象frm,第二个参数为,第二个参数为true表示创建模式对话框,为表示创建模式对话框,为false表示创建非模式对话框。表示创建非模式对话框。vDialog的方法继承自的方法继承自Component和和Window,所以它具备,所以它具备Component和和Window类的所有特征,如类的所有特征,如setVisible()方法等,其它重要方法如下:
19、方法等,其它重要方法如下:vboolean isModal( );返回对话框的类型,模式对话框返回;返回对话框的类型,模式对话框返回true,否则,返回,否则,返回false。vvoid setModal(boolean b);设置对话框的类型,参数;设置对话框的类型,参数true表示设置模式对表示设置模式对话框,为话框,为false表示设置非模式对话框。表示设置非模式对话框。 例例9-3:创建模态对话框:创建模态对话框 Company Logo例例9-3:创建模态对话框:创建模态对话框import java.awt.*;public class MyFrame extends Frame B
20、utton btnOpen=new Button(“打开打开”); MyFrame(String s) super(s); / 调用父类构造方法调用父类构造方法 add(btnOpen);/ 将按钮对象添加到窗体中将按钮对象添加到窗体中 setSize(200,150); setVisible(true); / 设置窗体是可见的设置窗体是可见的 public static void main(String args) MyFrame f=new MyFrame(“窗口窗口”); / 创建窗体,标题为创建窗体,标题为“窗口窗口” MyDialog dlg=new MyDialog(f,“登录对话
21、框登录对话框”,true);/ 创建对话框创建对话框 class MyDialog extends Dialog /对话框类对话框类 MyDialog(Frame f,String s,boolean b) / 构造方法,构造方法,f是与对话框相关的窗体是与对话框相关的窗体 super(f,s,b); / 调用父类的构造方法,对话框将依赖于调用父类的构造方法,对话框将依赖于f窗体窗体 setSize(120,50); setVisible(true); / 设置对话框可见设置对话框可见 【运行结果运行结果】(如图所示:登录对话框再窗体的前方,在未关闭对话框的前提下不能操作窗体,即(如图所示:登
22、录对话框再窗体的前方,在未关闭对话框的前提下不能操作窗体,即“打开打开”按钮无法使用)按钮无法使用) Company Logo3、面板(、面板(Panel)面板是一种容器,与面板是一种容器,与Window类的子类不同的是:面板类的子类不同的是:面板(及其子类)无边框、无标题,不能被移动、放大、(及其子类)无边框、无标题,不能被移动、放大、缩小或关闭。因此,面板不能作为独立的容器使用,缩小或关闭。因此,面板不能作为独立的容器使用,通常它作为中间容器,用以容纳其它组件,或子面通常它作为中间容器,用以容纳其它组件,或子面板。通常面板被放置在其他能独立使用的容器中,板。通常面板被放置在其他能独立使用的
23、容器中,如放置在窗体内。如放置在窗体内。Panel类的构造方法如下:类的构造方法如下:vPanel( );创建一个使用默认的布局管理器的面板。;创建一个使用默认的布局管理器的面板。vPanel(LayoutManager layout);创建一个使用指;创建一个使用指定布局管理器的面板。定布局管理器的面板。 例例9-4:面板的使用:面板的使用 Company Logo例例9-4:面板的使用:面板的使用import java.awt.*;public class MyFrame extends Frame Button btnOpen=new Button(打开打开); Button btnCl
24、ose=new Button(关闭关闭); Panel p=new Panel(); MyFrame(String s) super(s); / 调用父类构造方法调用父类构造方法 p.setBackground(Color.CYAN); /将面板将面板p背景色设为青色背景色设为青色 add(p); /把面板把面板p添加到窗口中添加到窗口中 p.add(btnOpen); / 将按钮添加到面板中将按钮添加到面板中 p.add(btnClose); setSize(200,100); setVisible(true); public static void main(String args) My
25、Frame f=new MyFrame(窗口窗口); /创建框架(窗口),标题为创建框架(窗口),标题为窗口窗口“ 【运行结果运行结果】(如图所示:窗体包含一个青色面板,此面板中包含两个按钮)(如图所示:窗体包含一个青色面板,此面板中包含两个按钮) Company Logo二、二、AWT基本组件基本组件 1、按钮(、按钮(Button)Button的构造方法:的构造方法:Button(String label); 常用成员方法:常用成员方法:setLabel(String label); 将按钮的标签文字设置为指定的字符串将按钮的标签文字设置为指定的字符串getLabel(); 获得此按钮的标
26、签文字。获得此按钮的标签文字。setActionCommand(); 设置此按钮激发的操作事件的命令名称。(默认即按钮的标签文字);设置此按钮激发的操作事件的命令名称。(默认即按钮的标签文字);getActionCommand(); 得到此按钮激发的操作事件的命令名称。得到此按钮激发的操作事件的命令名称。2、标签(、标签(Label)Label的构造方法:的构造方法:Label(String label);常用成员方法:常用成员方法:setText(); 设置此标签的文本。设置此标签的文本。getText(); 获取此标签的文本。获取此标签的文本。 3、文本框(、文本框(TextField)T
27、extField的构造方法:的构造方法:TextField (String label);常用成员方法:常用成员方法:setText(String str); 将此文本框显示的文本设置为指定文本(继承自父类将此文本框显示的文本设置为指定文本(继承自父类TextComponent)。)。getText(); 获取文本框的文本(继承自父类获取文本框的文本(继承自父类TextComponent)。)。setEditable(boolean b); 设置判断此文本框是否可编辑的标志。设置判断此文本框是否可编辑的标志。setEchoChar(char c); 设置此文本框的回显字符(继承自父类设置此文本
28、框的回显字符(继承自父类TextComponent)。)。Company Logo二、二、AWT基本组件基本组件 4、文本区(、文本区(TextArea)TextArea的构造方法:的构造方法:TextArea(String label); 构造一个新文本区,该文本区具有指定的文本。构造一个新文本区,该文本区具有指定的文本。TextArea(String text,int rows,int columns); 构造一个新文本区,该文本区具有指定的文本,以及构造一个新文本区,该文本区具有指定的文本,以及指定的行数和列数。(注意:列指定的行数和列数。(注意:列columns并不总是等于字符的个数,
29、它是近似平均字符宽度,并不总是等于字符的个数,它是近似平均字符宽度,与平台有关)与平台有关)常用成员方法:常用成员方法:setText(String str); (与文本框的功能相同)(与文本框的功能相同)getText();(与文本框的功能相同)(与文本框的功能相同)setEditable(boolean b); (与文本框的功能相同)(与文本框的功能相同)append(String str); 将给定文本追加到文本区的当前文本。将给定文本追加到文本区的当前文本。insert(String str,int pos); 在此文本区的指定位置插入指定文本。在此文本区的指定位置插入指定文本。5、单
30、选框与复选框(、单选框与复选框(Checkbox)Checkbox的构造方法:的构造方法: Checkbox(String label); Checkbox(String label,boolean state,CheckboxGroup group); 使用指定的标签文字构造一个使用指定的标签文字构造一个 Checkbox,使用布尔值,使用布尔值state将它设置为指定的默认选择状态,并使它处于指定的复选框组中将它设置为指定的默认选择状态,并使它处于指定的复选框组中(用于将多个复选框指定为一组单选框)。(用于将多个复选框指定为一组单选框)。 常用成员方法:常用成员方法:getLabel();
31、 获得此复选框的标签。获得此复选框的标签。setState(boolean state); 设置复选框的设置复选框的“开开”、“关关”状态。状态。getState(); 返回此复选框的返回此复选框的“开开”、“关关”状态。状态。Company Logo二、二、AWT基本组件基本组件 6、列表框(、列表框(List)与下拉选择框()与下拉选择框(Choice)List的构造方法:的构造方法:List(int rows,boolean multipleMode);创建一个初始化显示为指定行数;创建一个初始化显示为指定行数rows的新滚动列表,如果的新滚动列表,如果multipleMode的值的值为
32、为 true,则可从列表中同时选择多项。,则可从列表中同时选择多项。Choice的构造方法:的构造方法:Choice(); (选择框只有这一种构造形式)(选择框只有这一种构造形式)常用成员方法:常用成员方法:add(); 将一个项目添加到此将一个项目添加到此 List或或Choice中,替代已经过时的中,替代已经过时的addItem()。getItem(int index);获得此;获得此List或或Choice中指定索引上的字符串。中指定索引上的字符串。getItemCount();返回此;返回此List或或Choice中项目的数量。中项目的数量。getSelectedIndex();返回当
33、前选定项的索引,如果没有选定任何内容,则返回;返回当前选定项的索引,如果没有选定任何内容,则返回 -1。 getSelectedItem();获得当前选择项目的字符串表示形式。;获得当前选择项目的字符串表示形式。insert(String item,int index); 将项目将项目item插入到的指定位置插入到的指定位置index上。上。remove(int position); 从指定位置从指定位置position上移除一个项目。上移除一个项目。7、菜单组件、菜单组件菜单(菜单(Menu)应包含菜单项()应包含菜单项(MenuItem),并被包含在菜单栏(),并被包含在菜单栏(MenuB
34、ar)中,它们的)中,它们的位置关系如图位置关系如图9-3。菜单组件的构造方法:菜单组件的构造方法:菜单项(菜单项(MenuItem):):MenuItem(String label);构造具有指定标签的新菜单项。;构造具有指定标签的新菜单项。MenuItem(String label, MenuShortcut s);创建具有关联的键盘快捷方式的菜单项。;创建具有关联的键盘快捷方式的菜单项。菜单(菜单(Menu):):Menu(String label);构造具有指定标签的新菜单。;构造具有指定标签的新菜单。菜单栏(菜单栏(MenuBar):):MenuBar(); 创建新的菜单栏。创建新的
35、菜单栏。 例例9-5:构建菜单示例:构建菜单示例Company Logo图9-3 菜单类及其子类的位置关系 MenuBarMenuMenuItemMenuItemMCompany Logo例例9-5:构建菜单示例:构建菜单示例import java.awt.*;public class ShortcutMenu extends Frame MenuShortcut msOpen=new MenuShortcut(O); MenuShortcut msSave=new MenuShortcut(S); MenuShortcut msExit=new MenuShortcut(X); MenuBa
36、r menubar=new MenuBar(); Menu mnFile=new Menu(文件文件); Menu mnHelp=new Menu(帮助帮助); Menu mnNew=new Menu(新建新建); /“新新建建”是嵌套菜单是嵌套菜单 MenuItem miOpen=new MenuItem(打开打开,msOpen); MenuItem miSave=new MenuItem(保存保存,msSave); MenuItem miExit=new MenuItem(退出退出,msExit); MenuItem miAbout=new MenuItem(关于关于); MenuItem
37、 miC=new MenuItem(“C/C+文档文档”); MenuItem miJava=new MenuItem(Java文档文档); public ShortcutMenu(String title) super(title); mnNew.add(miC); mnNew.add(miJava); mnFile.add(mnNew);/将嵌套菜单将嵌套菜单mnNew加入到菜单加入到菜单mnFile上上 mnFile.add(miOpen); mnFile.add(miSave); mnFile.addSeparator(); mnFile.add(miExit); mnHelp.add
38、(miAbout); menubar.add(mnFile); menubar.setHelpMenu(mnHelp); this.setMenuBar(menubar); this.setSize(200,150); this.setVisible(true); public static void main(String args) new ShortcutMenu(菜单的快捷键示例菜单的快捷键示例); 【运行结果运行结果】(如图所示:按下(如图所示:按下Ctrl+X键时,会退出窗体)键时,会退出窗体) Company Logo9.2 布局管理器(布局管理器(LayoutManager)
39、9.2.1 什么是布局管理器什么是布局管理器布局(布局(Layout)就是指组件在容器中分布情况。布局管理器()就是指组件在容器中分布情况。布局管理器(LayoutManager),是),是Java中用来管理组件的排列、位置、大小等分布属性的类,中用来管理组件的排列、位置、大小等分布属性的类,Java通过对容器设置通过对容器设置相应的布局来实现不同的外观。相应的布局来实现不同的外观。 9.2.2 为什么要使用布局管理器为什么要使用布局管理器通常的编程语言,在控制通常的编程语言,在控制GUI显示时使用的是自身系统的坐标,例如显示时使用的是自身系统的坐标,例如VB的标准的标准坐标系统的原点在界面的
40、左上角,坐标系统的原点在界面的左上角,X轴为水平方向,轴为水平方向,Y轴为垂直方向,如图轴为垂直方向,如图9-4所示。所示。 一般的一般的Windows编程语言在设置界面布局时,组件的位置会严格按照这个坐标系统(编程语言在设置界面布局时,组件的位置会严格按照这个坐标系统(X,Y)来定位,这称为)来定位,这称为“绝对坐标定位绝对坐标定位”。一个。一个GUI界面在界面在Widnows平台中可以正常平台中可以正常显示,但是移植到其它平台时将会导致混乱,这也是一般编程语言不具备跨平台能显示,但是移植到其它平台时将会导致混乱,这也是一般编程语言不具备跨平台能力的一个重要原因。力的一个重要原因。 Java
41、处理处理GUI界面的方法是:将容器界面按照一定规则划分为若干网格,然后根据网格中界面的方法是:将容器界面按照一定规则划分为若干网格,然后根据网格中各单元格的位置及其相应布局规则放入指定组件。这种根据单元格位置定位组件的各单元格的位置及其相应布局规则放入指定组件。这种根据单元格位置定位组件的方法称为方法称为“相对坐标定位相对坐标定位”,因为这种方法与坐标(,因为这种方法与坐标(X,Y)无关,所以解决了跨平)无关,所以解决了跨平台时的台时的GUI界面显示问题。界面显示问题。 X轴轴Y轴轴(x,y)Company Logo9.2.3 常用的布局管理器常用的布局管理器 常用的布局管理器主要有:常用的布
42、局管理器主要有:FlowLayout(流水式布局)、(流水式布局)、BorderLayout(边(边界式布局)、界式布局)、GridLayout(网格式布局)、(网格式布局)、CardLayout(卡片式布局)、(卡片式布局)、GridBagLayout(网格袋式布局)。(网格袋式布局)。 一、一、FlowLayout(流水式布局)(流水式布局) 1 布局特点:布局特点:vFlowLayout把组件按照从左到右,从上到下的顺序逐次排列,组件排满把组件按照从左到右,从上到下的顺序逐次排列,组件排满容器的一行,会自动切换到下一行继续排列;容器的一行,会自动切换到下一行继续排列;v是是Panel类及
43、其子类(如:类及其子类(如:Applet)的默认布局。)的默认布局。2 构造方法:构造方法:vFlowLayout(); 构造一个新的构造一个新的 FlowLayout,组件居中对齐,默认水平和,组件居中对齐,默认水平和垂直间距是垂直间距是5个像素。个像素。vFlowLayout(int align); 构造一个新的构造一个新的 FlowLayout,对齐方式由,对齐方式由align指指定。定。vFlowLayout(int align, int hgap, int vgap); 创建一个新的创建一个新的FlowLayout,具有指定的对齐方式具有指定的对齐方式align以及指定的水平间隙以及
44、指定的水平间隙hgap和垂直间隙和垂直间隙vgap。注意:对齐参数注意:对齐参数align的值必须是下列值的值必须是下列值FlowLayout.LEFT、FlowLayout.RIGHT、FlowLayout.CENTER、FlowLayout.LEADING 或或 FlowLayout.TRAILING中之一,它们都是中之一,它们都是public static final int 型的静型的静态整型常量,其态整型常量,其相对应的整型值如表相对应的整型值如表9-2: 3流水式布局实例:流水式布局实例: 例例9-6:流水式布局的作用:流水式布局的作用Company Logo表表9-2 FlowL
45、ayout对齐参数字符串表示及其对应常量值表对齐参数字符串表示及其对应常量值表 java.awt.java.awt.FlowLayoutalign参参数字数字符串符串表示表示对应常对应常量值量值LEFTLEFT 0 0CENTERCENTER 1 1RIGHTRIGHT 2 2LEADINLEADING GCompany Logo例例9-6:流水式布局的作用:流水式布局的作用import java.awt.*;public class FlowLayoutDemo extends Frame Button b1=new Button(Button1); Button b2=new Button
46、(Button2); Button b3=new Button(Button3); Button b4=new Button(Button4); Button b5=new Button(Button5); public FlowLayoutDemo(String title) super(title); this.setLayout(new FlowLayout(); /更改布局为流水式布局更改布局为流水式布局 this.add(b1); /向容器中添加组件向容器中添加组件 this.add(b2); this.add(b3); this.add(b4); this.add(b5); thi
47、s.setSize(300,100); this.setVisible(true); public static void main(String args) new FlowLayoutDemo(FlowLayouDemo example!); 【运行结果运行结果】(如图所示:窗体包含(如图所示:窗体包含5个按钮,默认时组件从左到右放置,并居中排列,组件排满窗口的一行,自动切换到下一行继续个按钮,默认时组件从左到右放置,并居中排列,组件排满窗口的一行,自动切换到下一行继续排列,各组件之间的间隔为排列,各组件之间的间隔为5个像素)个像素) Company Logo二、二、BorderLayou
48、t(边界式布局)(边界式布局) 1 布局特点:布局特点:vBorderLayout按照位置将容器划分为按照位置将容器划分为5个区域:个区域:“North”、“South”、“West”、“East”、“Center”;分别代表:;分别代表:“上上”、“下下”、“左左”、“右右”、“中中” 5个位置;个位置;v是是Window类及其子类(如:类及其子类(如:Frame、Dialog)的默认)的默认布局。布局。2 构造方法:构造方法:vBorderLayout();构造一个的新边界布局,组件之间没;构造一个的新边界布局,组件之间没有间距。有间距。vBorderLayout(int hgap, in
49、t vgap);构造一个边界布;构造一个边界布局,并指定的组件之间的水平和垂直间距。局,并指定的组件之间的水平和垂直间距。3边界式布局实例:边界式布局实例:例例9-7:边界式布局的作用:边界式布局的作用Company Logo例例9-7:边界式布局的作用:边界式布局的作用import java.awt.*;public class BorderLayoutDemo extends Frame Button btnNorth=new Button(North); Button btnSouth=new Button(South); Button btnWest=new Button(West);
50、 Button btnEast=new Button(East); Button btnCenter=new Button(Center); public BorderLayoutDemo(String title) super(title); this.add(btnNorth,North); this.add(btnSouth,South); this.add(btnWest,West); this.add(btnEast,East); this.add(btnCenter,Center); this.setSize(200,150); this.setVisible(true); pub