Java软件设计基础高级高级GUIGUI设计与多媒体技术设计与多媒体技术PDF文件使用pdfFactoryPro试用版本创建布局设计••布局概述布局概述–java.awt•FlowLayout•BorderLayout•CardLayout•GridLayout•GridBagLayout–java.swing•BoxLayout•ScrollPanelLayout•ViewportLayout•OverLayoutPDF文件使用pdfFactoryPro试用版本创建••FlowLayoutFlowLayout–布局策略•将容器的组件按照加入的先后顺序从左至右依次排列,一行排满后就转到下一行继续从左至右顺序排列,每一行中的组件都居中排列,组件间默认的水平和垂直间隙是五个像素。•FlowLayout是JPanel与Applet默认的布局管理策略。–构造方法FlowLayoutFlowLayout()()创建一个创建一个FlowLayoutFlowLayout居中布局,组件间水平和垂直间隙居中布局,组件间水平和垂直间隙均为均为55个像素个像素FlowLayout(intFlowLayout(intalign)align)创建一个创建一个FlowLayoutFlowLayout布局,对齐方式为布局,对齐方式为alignalign,组件间水,组件间水平和垂直间隙均为平和垂直间隙均为55个像素个像素FlowLayout(intFlowLayout(intalign,align,intinth,h,intintv)v)创建一个创建一个FlowLayoutFlowLayout布局,对齐方式为布局,对齐方式为alignalign,组件间水,组件间水平和垂直间隙分别为平和垂直间隙分别为hh和和vv个像素个像素PDF文件使用pdfFactoryPro试用版本创建–示例importjava.awt.*;importjavax.swing.*;publicclassFlowsextendsJFrame{privateJButtonbut1,but2,but3;publicFlows(){super(FlowLayout演示程序);FlowLayoutlayout=newFlowLayout(FlowLayout.CENTER);Containerc=getContentPane();c.setLayout(layout);layout.setHgap(8);but1=newJButton(left);but2=newJButton(center);but3=newJButton(right);c.add(but1);c.add(but2);c.add(but3);setSize(300,100);show();}publicstaticvoidmain(Stringargs[]){Flowsapp=newFlows();}}PDF文件使用pdfFactoryPro试用版本创建••BorderLayoutBorderLayout–布局策略•将窗口分为North/East/South/West/Center五个区域,中间的区域最大。当哪个区域不放置组件时,其空间就分配给其他区使用。每加入一个组件都应该指明添加到哪个区域。•BorderLayout也称为边界布局管理器,是Window、Frame和Dialog默认的布局管理策略。–构造方法–一般方法BorderLayoutBorderLayout()()创建一个创建一个BorderLayoutBorderLayoutBorderLayout(intBorderLayout(inth,h,intintv)v)创建一个创建一个BorderLayoutBorderLayout布局,组件间水平和垂直间隙分别为布局,组件间水平和垂直间隙分别为hh和和vv个像素个像素add(Componentadd(Componentcomp,Objectcon)comp,Objectcon)加入组件加入组件compcomp,,concon指明组件被加入的位置指明组件被加入的位置PDF文件使用pdfFactoryPro试用版本创建–实例PDF文件使用pdfFactoryPro试用版本创建–续PDF文件使用pdfFactoryPro试用版本创建••CardLayoutCardLayout–布局策略•可实现多个组件在同一容器区域内重叠放置、交替显示。通过用户的操作可将组件一个接一个显示出来,即容纳多个组件的同时只能从这些组件中选出一个来显示,这个被显示的组件将占据所有的容器空间。•CardLayout也称为卡式布局管理器。–构造方法–一般方法CardLayoutCardLayout()()创建一个创建一个CardLayoutCardLayoutCardLayout(intCardLayout(inth,h,intintv)v)创建创建CardLayoutCardLayout布局,组件间水平和垂直间隙分别为布局,组件间水平和垂直间隙分别为hh和和vv个像素个像素first(Containerfirst(Containerc)c)显示显示ContainerContainer中的第一个对象中的第一个对象last(Containerlast(Containercc显示显示ContainerContainer中的最后一个对象中的最后一个对象previous(Containerprevious(Containerc)c)显示显示ContainerContainer中的上一个对象中的上一个对象next(Containernext(Containerc)c)显示显示ContainerContainer中的下一个对象中的下一个对象add(Stringadd(Stringt,Componentc)t,Componentc)将组件将组件cc加到容器中并指定与加到容器中并指定与cc对应的选项卡文本提示为对应的选项卡文本提示为ttPDF文件使用pdfFactoryPro试用版本创建–实例PDF文件使用pdfFactoryPro试用版本创建–续PDF文件使用pdfFactoryPro试用版本创建••GridLayoutGridLayout–布局策略•在一个二维网格中布置组件。将容器划分为若干行若干列的网格区域,每个网格的大小相等,组件就位于这些划分出来的小格中,一个网格可以放置一个组件。组件可被依次的放在第一行第一列、第一行第二列……的顺序进行。•通过在一个网格中放置容器,可以实现嵌套。•GridLayout也称为网格布局管理器,该布局比较灵活,划分多少网格由程序自由控制,组件定位也比较精确。–构造方法GridLayoutGridLayout()()创建一个创建一个GridLayoutGridLayout布局布局GridLayout(intGridLayout(intr,r,intintc)c)创建一个创建一个rr行行cc列的列的GridLayoutGridLayout布局布局GridLayout(intGridLayout(intr,r,intintc,c,intinth,h,intintv)v)创建一个创建一个rr行行cc列的列的GridLayoutGridLayout布局布局,,组件间水平和垂直组件间水平和垂直间隙分别为间隙分别为hh和和vv个像素个像素PDF文件使用pdfFactoryPro试用版本创建–实例PDF文件使用pdfFactoryPro试用版本创建••GridBagLayoutGridBagLayout–布局策略•采用网格的形式来布置组件,允许指定的组件跨多行或多列,同时允许组件部分重叠。•组件的位置和大小由GridBagConstraints类的对象实例决定。GridBagConstraints类规范组件使用GridBagLayout布局管理器的限制条件。•GridLayout也称为网格包布局管理器,是Java提供的最灵活、最复杂的布局管理器之一。–构造方法PDF文件使用pdfFactoryPro试用版本创建–GridBagLayout的方法–GridBagConstraints的属性GridBagLayoutGridBagLayout()()创建一个创建一个GridBagLayoutGridBagLayout布局布局setConstrains(ComponentsetConstrains(Componentcomp,comp,GridBagConstraintsGridBagConstraintscons)cons)设置网格包约束条件,设置网格包约束条件,compcomp是被加入的组件,并用是被加入的组件,并用conscons指定为指定为GridBagConstraintsGridBagConstraints类的一个实例类的一个实例add(Componentadd(Componentcomp,Objectcons)comp,Objectcons)添加组件,并用添加组件,并用conscons指定指定GridBagConstraintsGridBagConstraints类的一个实例类的一个实例fillfill当组件比所在网格小时的填充方式当组件比所在网格小时的填充方式NONE,HORIZONTAL,VERTICAL,BOTHNONE,HORIZONTAL,VERTICAL,BOTHAnchorAnchor当组件小于显示区域网格时决定组件当组件小于显示区域网格时决定组件放置的位置放置的位置CENTER(CENTER(默认值默认值),NORTH,NORTHEAST,EAST,SOUTH,),NORTH,NORTHEAST,EAST,SOUTH,SOUTHEAST,SOUTHWEST,WEST,NORTHWESTSOUTHEAST,SOUTHWEST,WEST,NORTHWESTInsetsInsets填充组件和网格边缘间的部分,负值填充组件和网格边缘间的部分,负值导致组件延伸到网格单元的外边导致组件延伸到网格单元的外边默认为默认为insets(0,0,0,0)insets(0,0,0,0),四个参数分别代表上下左,四个参数分别代表上下左右右Grid