首页 > 编程知识 正文

java布局管理器的设置和使用,安卓布局管理器有哪些

时间:2023-05-04 12:52:55 阅读:110168 作者:2505

绝对布局绝对布局顾名思义,就是通过明确指定组件在容器中的位置和大小,可以使用绝对坐标来定位组件。

要使用绝对布局,请执行以下操作:

使用container.setlayout(null )方法取消布局管理器。 Component.setBounds )方法用于设置每个组件的大小和位置流布局管理器的流布局管理器在整个容器中的布局。 顾名思义,组件像“流”一样从左到右排列,直到占用了该行的所有空间,然后下移一行。 缺省情况下,组件位于每行的中央,但您也可以根据设置更改每行组件的放置位置。

FlowLayout类提供了以下常见的生成方法:

公共流布局(publicflowlayout ) intalignment (public flowlayout ) int alignment,int horizGap,int vertGap )构建方法中的alignmmment 如果alignment为2,则指定每行组件右对齐。 如果alignment为1,则指定每行的组件都居中对齐。

horizGap和vertGap参数指定组件之间的水平间距和垂直间距(以像素为单位)。

边界布局管理器如果在缺省情况下不指定窗体的布局,则Swing组件的布局模式为BorderLayout布局管理器。 在边界布局管理器中,可以将容器分为东、南、西、北和中五个区域,并在这些区域中添加组件。 在容器调用Container类的add ()方法添加组件时,可以在边界布局管理器中为此组件设置区域。 区域控制由BorderLayout类中的成员变量决定,如下表所示。

! [在此插入图像描述] 65https://img-blog.csdn img.cn/20181201205124350.png网格布局管理器将容器分割为网格,因此组件按行和列进行排序在网格布局管理器中,每个组件的大小相同,网格中的空间数量取决于网格的行数和列数。 组件从网格的左上角开始,按从左到右、从上到下的顺序添加到网格中。 此外,每个组件都填满整个网格,当您调整表单大小时,组件也会相应地调整大小。

公共网格(intRows,int columns )公共网格(introws,int columns,int horizGap,int vertGap ) rows和columns帕拉

箱式布局管理器由BoxLayout类实现的布局管理器称为箱式布局管理器,用于管理一组水平或垂直排列的组件。 水平箱用于管理一组水平排列的组件,垂直箱用于管理一组垂直排列的组件。

BoxLayout类提供了一个构造方法boxlayout(contaninertarget,int axis )。 参数target是采用这种布局方法的容器对象,而参数axis是采用的布局方法。 例如,如果设置为静态常量X_AXIS,则组件将从右侧排列,如果组件为y,则创建水平框。无论是水平框还是垂直框,即使表单小到无法显示所有组件,组件也会显示一行或一列

对于水平箱,箱形布局将尝试将所有组件的高度调整为最高组件的高度。 如果某个组件不能满足此要求,它将根据该组件的垂直调整值alignmentY进行调整。 对于垂直框,请单击,

尝试将所有组件的宽度调整为最宽的组件的宽度。 例如,如果某个组件不满足此要求,则会根据该组件的“垂直调整值”(alignmentX )进行调整。 (0.0、0.5、1.0 ) )。

缺省情况下,在箱形布局管理器中实现的组件之间没有间隔。 如果需要在组件之间设置间距,可以使用Box类提供的六个不可见组件实现。 这些组件专门用于设置箱形布局。

Box类是以BoxLayout类作为布局管理器的轻量级容器,分别为静态方法createHorizontalBox ()和createVerticalBox ) )中的水平或垂直布局管理器箱型容器该类有两种不可见组件:撑杆型和粘合剂型。

水平支柱createhorizontalstrut(intwidth )垂直支柱createverticalstrut (int height )区域支柱createrigidarea(dimensiond )水平粘接剂createhorizontalgtalgrea 面积粘合剂(Glue )支柱类型的构件具有指定的宽度、高度和大小,通常用于设置构件之间的固定间距。

粘合剂类型的组件类似于弹簧,通常用于将组件均匀分布在容器中。

卡片布局管理器

由CardLayout类实现的布局管理器称为卡片布局管理器,它处理被管理容器中包含的容器或组件。 直接添加到受管理容器的每个内容

器或组件为一个卡片,最先被添加到其所管理容器中的容器或组件被认为是第一个卡片,最后被添加的则为最后一个卡片,初次运行时将显示第一个卡片。

![在这里插入图片描述](https://img-blog.csdnimg.cn/2018120120521014.png)

此五种方法均需要传入以个Container型的对象,该对象为布局管理器对象所管理的容器对象。

利用next()或previous()方法显示卡片时,将循环显示所有卡片。使用show(Container parent, String name)方法显示卡片时,则需要利用add(Componet comp,Object constraints)方法向其所管理的容器中添加组件,其中入口参数parent为卡片对象,name为卡片的标签。 网格组布局管理器

由GridBagLayout类实现的布局管理器称为网格组布局管理器,它实现了一个动态的矩形网格,这个矩形网格由无数个矩形单元格组成,每个组件可以占用一个或多个这样的单元格。所谓动态的矩形网格,就是可以根据实际需要随意增减矩形网格的行数和列数。
在向由GridBagLayout类管理的容器中添加组件时,需要为每个组件创建一个与之关联的GridBagConstraints类的对象,通过该类中的属性可以设置组件的布局信息,例如组件在网格组中位于第几行、第几列,以及需要占用几行几列等。
通过GridBagLayout类实现的矩形网格的绘制方向由容器决定,如果容器的方向是从左到右,则位于矩形网格左上角的单元格的列索引为0,此时组件左上角的点为起始点;如果容器的方向是从右到左,则位于矩形网格右上角的单元格的列索引为0,此时组件右上角的点为起始点。
GridBagLayout类中各个属性的功能和使用方法
gridx和gridy属性
这两个属性用来设置组件起始点所在单元格的索引值。需要注意的是,属性gridx设置的是X轴(即网格水平方向)的索引值,所以它表示的是组件起始点所在列的索引;属性gridy设置的是Y轴(即网格垂直方向)的索引值,所以它表示的是组件起始点所在行的索引。
gridwidth和gridheight属性
这两个属性用来设置组件占用网格组的行数和列数。属性gridwidth为组件占用网格组的列数,也可以理解为以单元格为单位组件的宽度;属性gridheight为组件占用网格组的行数,也可以理解为以单元格为单位组件的高度。
anchor属性
属性anchor用来设置组件在其所在显示区域的显示位置。通常将显示区域从方向上划分为9个方位,分别为北方(NORTH)、东北(NORTHEAST)、东方(EAST)、东南(SOUTHEAST)、南方(SOUTH)、西南(SOUTHWEST)、西方(WEST)、西北(NORTHWEST)和中心(CENTER)。
九个方位的单词是该类的静态常量,静态常量CENTER为默认值。
fill属性
属性fill用来设置组件的填充方式。当单元格显示区域的面积大于组件面积时,或者一个组件占用多个单元格时,显示组件可能不必占用所有显示区域,在这种情况下可以通过fill属性设置组件的填充方式。默认情况下是将该属性设置为静态常量NONE,即不调整组件大小至填满显示区域;HORIZONTAL为只调整组件水平方向的大小(即组件宽度)至填满显示区域;VERTICAL为只调整组件垂直方向的大小(即组件高度)至填满显示区域;BOTH为同时调整组件的宽度和高度至填满显示区域。
insets属性
属性insets用来设置组件四周与单元格边缘之间的最小距离。该属性的类型为Insets,Insets类仅有一个构造方法Insets(int top, int left, int bottom, int right),它的4个入口参数依次为组件上方、左侧、下方和右侧的最小距离,单位为像素,如下图所示,默认为没有距离。
ipadx和ipady属性
这两个属性用来修改组件的首选大小。属性ipadx用来修改组件的宽度,属性ipady用来修改组件的高度。如果为正数,则在首选大小的基础上增加指定的宽度和高度。如果为负数,则在首选大小的基础上减小指定的宽度和高度。
weightx和weighty属性
这两个属性用来设置网格组的每一行和每一列对额外空间的分布方式。在不设置属性weightx和weighty(即采用默认方式)的情况下,当窗体调整到足够大时,组件全部聚集在窗体的中央,在组件四周出现了大片的额外空间。通过这两个属性设置网格组的每一行和每一列对额外空间的分布方式可避免此现象。
这两个属性的默认值均为0,表示不分布容器的额外空间。属性weightx用来设置器所在列对额外空间的分布方式,如果该列中设置多个weightx属性,则取他们的最大值为该列的分布方式;weighty属性与之类似。
注:
在设置网格组的每一行和每一列对额外空间的分布方式时,只设置第一行的weightx属性和第一列的weighty属性,这样会方便前期调试和后期维护。
在设置网格组的每一行和每一列对额外空间的分布方式时,为各个属性按百分比取值。

弹簧布局管理器

使用弹簧布局管理器
弹簧布局管理器以容器和组件的边缘为操纵对象,通过为组件和容器边缘以及组件和组件边缘建立约束,实现对组件布局的管理。
通过putConstraint(String e1, Component c1,int pad, String e2, Component c2)方法可以为各个边之间建立约束。
C1需要参考的组件对象,e1需要参考的组件对象的具体需要参考的边
C2被参考的组件对象(也可以是需要参考的组件对象所属的容器对象)
e2被参考的组件的具体被参考的边,pad两条边之间的距离,即两组件的间距
注:当e2在e1的北侧或西侧时,pad为正数,当e2在e1的南侧或东侧时,则pad为负数,否则两条边将重叠。
参数e1和e2 可以冲该类提供的静态常量中选择

EAST East表示组件东侧的边SOUTH South表示组件南侧的边WEST West表示组件西侧的边NORTH North表示组件北侧的边

使用弹簧和支柱
利用Spring类可以创建弹簧和支柱,但不是通过构造方法创建的,而是静态方法constant()
在利用方法constant(int min, int pref, int max) 创建弹簧时需要设置3个参数,分别为弹簧的最小值、首选值和最大值。最小值可以理解为弹簧被压缩到极限时的长度;首选值可以理解为弹簧自然放置情况下的长度;最大值可以理解为弹簧被拉伸到极限时的长度。如果这3个值相等,弹簧就没有了伸缩能力,也就变成了支柱,如果是创建支柱通常利用方法constant(int pref),因为它更方便。
通过方法width(Component c)和height(Component c)可以快速获得一个弹簧,它们的入口参数均为组件对象,所得弹簧的最小值、首选值、最大值和实际值,分别为指定组件最小值(minimumSize)、首选值(preferredSize)、最大值(maximumSize)和实际值(size)的宽度或高度。

弹簧的实际值,可理解为弹簧当前的长度通过getValue()和setValue(int value)方法可获得和设置弹簧当前的长度。max(Spring s1, Spring s2)所得的弹簧的最小值、首选值和最大值,均为这两个弹簧相应值中相对较大的值sum(Spring s1, Spring s2)所得的弹簧的最小值、首选值和最大值,均为这两个弹簧相应值的和scale(Spring s, float factor)所得的弹簧的最小值、首选值和最大值,均为这两个弹簧相应值的factor倍minus(Spring s)所得的弹簧的最小值为指定弹簧最大值的负数,首选值为指定弹簧首选的负数最大值为指定弹簧最小值的负数

以上四个方法,均用来根据指定条件获得一个新的弹簧。
使用弹簧建立约束

putConstraint(String e1, Component c1,int pad, String e2, Component c2)putConstraint(String e1, Component c1, String s , String e2, Component c2)

利用弹簧控制组件大小
利用SpringLayout类的getConstraints(Component c)方法可以得到SpringLayout.Constraints类的对象,通过该类的方法setWidth(Spring width)和setHeight(Spring height)可以为组件的宽度和高度添加约束。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。