public class GroupLayout extends Object implements LayoutManager2
GroupLayout
是
LayoutManager
,分层组组件来定位他们在
Container
。
GroupLayout
用建设者,但可以手工编码以及。分组是由
Group
类实例。
GroupLayout
支持两种类型的组。顺序组依次将子元素顺序排列,一个接一个。平行组将其子元素在四种方式中的一种。
每个组可以包含任意数量的元素,一个元素是一个Group
,Component
,或间隙。差距可以被认为是一个无形的组成部分,具有最低,首选和最大尺寸。此外GroupLayout
支持优先的差距,其价值来源于LayoutStyle
。
元素类似于一个弹簧。每个元素都有一个指定的最小值,首选和最大值的范围。差距有开发商指定的范围,或一个范围由LayoutStyle
。对于Component
s范围从Component
的getMinimumSize
确定,getPreferredSize
和getMaximumSize
方法。此外,当加入Component
s你可以指定一个特定的范围内使用而不是从组件。一Group
范围是由集团的类型的确定。一个ParallelGroup
的范围是其元素的范围最大。一个SequentialGroup
的范围是其元素的范围和。
GroupLayout
对待各轴独立。也就是说,有一个代表水平轴的组,和一个代表垂直轴的组。水平组负责确定沿水平轴线的最小、优选和最大尺寸以及设置包含在它中的部件的x和宽度。垂直组负责确定沿垂直轴的最小,优选和最大尺寸以及设置包含在它的组件的Y和高度。每个Component
必须同时在水平和垂直组存在,否则IllegalStateException
扔在布局,或当最小或最大尺寸要求,优先。
下面的图显示了水平轴上的顺序组。序列组包含三个组件。沿垂直轴使用一个平行组。
为了加强每一个轴被独立处理的图表显示每个组和元素沿每个轴的范围。每个组件的范围已被投影到轴上,并组呈现在蓝色(水平)和红色(垂直)。为可读性,在顺序组中的每个元素之间有一个间隙。
沿水平轴的顺序组呈现为一个坚实的蓝色线。注意顺序组是它包含的子元素的总和。
沿垂直轴平行组是每一个组件的高度的最大值。由于所有三个组分都具有相同的高度,平行组具有相同的高度。
下面的图显示了相同的三个组件,但沿水平轴和顺序组沿垂直轴的平行组。
作为c1
是最大的三个部件,平行组的大小c1
。作为c2
和c3
小于c1
他们是根据指定的元件对齐对齐(如果指定)或平行组的默认对齐方式。图中的c2
和c3
与LEADING
对准了。如果组件的方向从右到左,然后c2
c3
将位于对面。
下面的图显示了水平和垂直轴上的顺序组。
GroupLayout
提供插入Component
s能力之间的差距。这种差距的大小是由LayoutStyle
实例确定。这可能是打开使用setAutoCreateGaps
方法。同样,你可以使用setAutoCreateContainerGaps
方法插入组件,触摸的父容器的边缘之间的间隙。
下面建立一个由一列中的两个标签面板,然后在下一栏两文本框:
组件面板=…;grouplayout布局=新grouplayout(面板);面板设置布局(布局);/打开自动添加组件之间的间隙布局。setautocreategaps(真的);/打开自动创建触摸组件之间的间隙容器和容器的边缘。布局。setautocreatecontainergaps(真的);/创建一个水平轴的顺序组。grouplayout.sequentialgroup H组= createsequentialgroup()布局;顺序组依次包含两个平行组。一个平行组包含标签,另一组包含文本字段。沿着水平轴的平行组中的标签/ /将它们放置在同一个X位置。/ //变量缩进是用来加强分组的水平。H组。createparallelgroup() addgroup(布局。addcomponent(标签)。addcomponent(label2));H组。createparallelgroup() addgroup(布局。addcomponent(TF1)。addcomponent(TF2));布局sethorizontalgroup(H组);/创建一个垂直轴的顺序组。grouplayout.sequentialgroup V = createsequentialgroup()布局;的顺序组包含两个对齐的平行组沿着基线的内容。第一平行组包含第一个标签和文本字段,第二个并行组包含第二个标签和文本字段。通过使用一个连续的组标签和文本字段相互垂直放置的位置。V。addgroup(布局。createparallelgroup(对齐。基线)。addcomponent(标签)。addcomponent(TF1));V。addgroup(布局。createparallelgroup(对齐。基线)。addcomponent(label2)。addcomponent(TF2));布局。setverticalgroup(V);
当运行以下是产生。
这个布局包括以下几个。
Group
add
方法做的。add
方法返回调用者。这可以很容易地链接调用。例如,group.addComponent(label1).addComponent(label2);
相当于group.addComponent(label1); group.addComponent(label2);
。Group
s没有公共构造函数;而用GroupLayout
创建方法。Modifier and Type | Class and Description |
---|---|
static class |
GroupLayout.Alignment
的可能途径
ParallelGroup 枚举可以使孩子。
|
class |
GroupLayout.Group
|
class |
GroupLayout.ParallelGroup
一个
Group 对齐和大小的孩子。
|
class |
GroupLayout.SequentialGroup
一个
Group ,位置和大小的元素的顺序,一个接一个。
|
Modifier and Type | Field and Description |
---|---|
static int |
DEFAULT_SIZE
表示从组件或间隙的大小应用于特定的范围值。
|
static int |
PREFERRED_SIZE
表示从组件或间隙中的首选大小应用于特定范围值。
|
Constructor and Description |
---|
GroupLayout(Container host)
创建一个指定的
Container
GroupLayout 。
|
Modifier and Type | Method and Description |
---|---|
void |
addLayoutComponent(Component component, Object constraints)
通知,
Component 已添加到父容器。
|
void |
addLayoutComponent(String name, Component component)
通知,
Component 已添加到父容器。
|
GroupLayout.ParallelGroup |
createBaselineGroup(boolean resizable, boolean anchorBaselineToTop)
创建并返回一个
ParallelGroup 对齐是沿基线元素。
|
GroupLayout.ParallelGroup |
createParallelGroup()
创建并返回一个与
Alignment.LEADING 对准
ParallelGroup 。
|
GroupLayout.ParallelGroup |
createParallelGroup(GroupLayout.Alignment alignment)
创建并返回一个与指定的对齐
ParallelGroup 。
|
GroupLayout.ParallelGroup |
createParallelGroup(GroupLayout.Alignment alignment, boolean resizable)
创建并返回一个与指定的对齐
ParallelGroup 和大小调整行为。
|
GroupLayout.SequentialGroup |
createSequentialGroup()
创建并返回一个
SequentialGroup 。
|
boolean |
getAutoCreateContainerGaps()
返回
true 如果容器和组件之间的间隙,边境的集装箱自动创建。
|
boolean |
getAutoCreateGaps()
返回
true 如果组件之间的间隙自动创建。
|
boolean |
getHonorsVisibility()
返回时,是否考虑组件的可见性大小和定位组件。
|
float |
getLayoutAlignmentX(Container parent)
返回沿X轴的对齐方式。
|
float |
getLayoutAlignmentY(Container parent)
返回沿Y轴的对齐方式。
|
LayoutStyle |
getLayoutStyle()
返回用于组件之间的差距计算
LayoutStyle 优先。
|
void |
invalidateLayout(Container parent)
无效的布局,表明如果布局管理器已缓存的信息应该被丢弃。
|
void |
layoutContainer(Container parent)
指定指定的容器。
|
void |
linkSize(Component... components)
强制指定的组件具有相同的大小,无论它们的首选,最小或最大大小。
|
void |
linkSize(int axis, Component... components)
强制指定的组件沿指定的轴具有相同的大小,而不管它们的首选,最小或最大大小。
|
Dimension |
maximumLayoutSize(Container parent)
返回指定容器的最大大小。
|
Dimension |
minimumLayoutSize(Container parent)
返回指定容器的最小大小。
|
Dimension |
preferredLayoutSize(Container parent)
返回指定容器的首选大小。
|
void |
removeLayoutComponent(Component component)
通知,
Component 已从父容器中移除。
|
void |
replace(Component existingComponent, Component newComponent)
用新的替换现有组件。
|
void |
setAutoCreateContainerGaps(boolean autoCreateContainerPadding)
设置容器和触摸容器边框之间的组件之间的间隙是否应自动创建。
|
void |
setAutoCreateGaps(boolean autoCreatePadding)
设置是否自动创建组件之间的间隙。
|
void |
setHonorsVisibility(boolean honorsVisibility)
设置大小和定位组件时是否考虑组件的可见性。
|
void |
setHonorsVisibility(Component component, Boolean honorsVisibility)
设置组件的可见性是否被考虑用于大小和定位。
|
void |
setHorizontalGroup(GroupLayout.Group group)
集
Group 沿水平轴的位置和大小的组件。
|
void |
setLayoutStyle(LayoutStyle layoutStyle)
设置用于计算元件之间的间隙的
LayoutStyle 优先。
|
void |
setVerticalGroup(GroupLayout.Group group)
集
Group 沿垂直轴的位置和大小的组件。
|
String |
toString()
返回该
GroupLayout 字符串表示形式。
|
public static final int DEFAULT_SIZE
public static final int PREFERRED_SIZE
public GroupLayout(Container host)
Container
GroupLayout
。
host
-
Container
的
GroupLayout
是
LayoutManager
为
IllegalArgumentException
如果主机
null
public void setHonorsVisibility(boolean honorsVisibility)
true
表明非可视组件不应该作为布局的一部分。一个价值
false
表明部件应定位和大小的不可见性。
一个价值false
是有用的当组件的可见性是动态调整的,你不想周围的元件和尺寸变化。
指定的值用于不具有指定的显式可见性的组件使用。
默认的是true
。
honorsVisibility
-无论是组件的可见性考虑尺寸和定位元件
setHonorsVisibility(Component,Boolean)
public boolean getHonorsVisibility()
public void setHonorsVisibility(Component component, Boolean honorsVisibility)
Boolean.TRUE
表明如果
component
不可见,它不应该作为布局的一部分。一个价值
false
表明
component
定位和大小的不管它的知名度。一个价值
null
表示由单个参数的方法
setHonorsVisibility
指定的值应该被使用。
如果component
是不是孩子的Container
这GroupLayout
是管理,它将被添加到Container
。
component
-组件
honorsVisibility
-是否应该考虑这
component
能见度的大小和位置
null
component
IllegalArgumentException
setHonorsVisibility(Component,Boolean)
public void setAutoCreateGaps(boolean autoCreatePadding)
true
你加两组件到一个
SequentialGroup
两部件之间的间隙是自动创建的。默认的是
false
。
autoCreatePadding
是否自动创建组件之间的间隙
public boolean getAutoCreateGaps()
true
如果组件之间的间隙自动创建。
true
如果组件之间的间隙自动创建
public void setAutoCreateContainerGaps(boolean autoCreateContainerPadding)
false
。
autoCreateContainerPadding
无论容器和组件接触的容器边界之间的差距将会被自动创建
public boolean getAutoCreateContainerGaps()
true
如果容器和组件之间的间隙,边境的集装箱自动创建。
true
如果容器和组件之间的间隙,边境的集装箱自动创建
public void setHorizontalGroup(GroupLayout.Group group)
Group
沿水平轴的位置和大小的组件。
group
-
Group
沿水平轴的位置和大小的组件
IllegalArgumentException
如果集团是
null
public void setVerticalGroup(GroupLayout.Group group)
Group
沿垂直轴的位置和大小的组件。
group
-
Group
沿垂直轴的位置和大小的组件
IllegalArgumentException
如果集团是
null
public GroupLayout.SequentialGroup createSequentialGroup()
SequentialGroup
。
SequentialGroup
public GroupLayout.ParallelGroup createParallelGroup()
Alignment.LEADING
对准
ParallelGroup
。这是一个更一般的
createParallelGroup(Alignment)
方法覆盖的方法。
ParallelGroup
createParallelGroup(Alignment)
public GroupLayout.ParallelGroup createParallelGroup(GroupLayout.Alignment alignment)
ParallelGroup
。这是一个与第二个参数提供
true
更一般的
createParallelGroup(Alignment,boolean)
方法覆盖的方法。
alignment
-组的元素的对齐方式
ParallelGroup
null
alignment
IllegalArgumentException
createBaselineGroup(boolean, boolean)
,
GroupLayout.ParallelGroup
public GroupLayout.ParallelGroup createParallelGroup(GroupLayout.Alignment alignment, boolean resizable)
ParallelGroup
与指定的对齐和调整大小行为。这孩子怎么
alignment
参数指定元素的位置,不填写组。例如,如果一个与
TRAILING
对准
ParallelGroup
给出100个孩子只需要50,孩子被放置在位置50(以左至右组件定位)。
基线对齐是唯一有用的,当使用沿垂直轴。一个ParallelGroup
沿水平轴的基线对齐创建作为LEADING
。
参考ParallelGroup
在基线组的行为细节。
alignment
-组的元素的对齐方式
resizable
-
true
如果组的大小可调整;如果是不可调整大小的首选大小用于最小和最大尺寸的组
ParallelGroup
null
alignment
IllegalArgumentException
createBaselineGroup(boolean, boolean)
,
GroupLayout.ParallelGroup
public GroupLayout.ParallelGroup createBaselineGroup(boolean resizable, boolean anchorBaselineToTop)
ParallelGroup
对齐是沿基线元素。
resizable
-组是否可调整大小
anchorBaselineToTop
无论基线锚定到组的顶部或底部
createBaselineGroup(boolean, boolean)
,
GroupLayout.ParallelGroup
public void linkSize(Component... components)
这可以使用多次来强制任何数量的组件共享相同的大小。
连接组件不可调整大小。
components
-这是
Component
s具有相同的尺寸
IllegalArgumentException
-如果
components
是
null
,或包含
null
linkSize(int,Component[])
public void linkSize(int axis, Component... components)
这可以使用多次来强制任何数量的组件共享相同的大小。
联系Component
s不可调整大小。
components
-这是
Component
s具有相同的尺寸
axis
-轴连接尺寸;一个
SwingConstants.HORIZONTAL
或
SwingConstans.VERTICAL
IllegalArgumentException
-如果
components
是
null
,或包含
null
;或
axis
不
SwingConstants.HORIZONTAL
或
SwingConstants.VERTICAL
public void replace(Component existingComponent, Component newComponent)
existingComponent
-应该被删除并替换
newComponent
组件
newComponent
-放在
existingComponent
的地方组件
IllegalArgumentException
-如果组件是
null
或
existingComponent
不被这个布局管理器管理
public void setLayoutStyle(LayoutStyle layoutStyle)
LayoutStyle
优先。一个价值
null
表示
LayoutStyle
共享实例应用。
layoutStyle
-
LayoutStyle
使用
LayoutStyle
public LayoutStyle getLayoutStyle()
LayoutStyle
优先。返回指定
setLayoutStyle
的价值,这可能是
null
。
LayoutStyle
优先
public void addLayoutComponent(String name, Component component)
Component
已添加到父容器。你不应该直接调用这个方法,你应该使用的一个
Group
方法添加一个
Component
。
addLayoutComponent
接口
LayoutManager
name
要与组件关联的字符串
component
-
Component
加以补充
public void removeLayoutComponent(Component component)
Component
已从父容器中移除。你不应该直接调用这个方法,而不是调用
remove
对母
Container
。
removeLayoutComponent
接口
LayoutManager
component
-要移除的组件
Component.remove(java.awt.MenuComponent)
public Dimension preferredLayoutSize(Container parent)
preferredLayoutSize
接口
LayoutManager
parent
-返回容器的首选尺寸
parent
首选大小
IllegalArgumentException
-如果
parent
是不一样的
Container
这个被创造出来的
IllegalStateException
-如果任何组件添加到这个布局不同时在水平和垂直组
Container.getPreferredSize()
public Dimension minimumLayoutSize(Container parent)
minimumLayoutSize
接口
LayoutManager
parent
-返回容器的大小
parent
最小尺寸
IllegalArgumentException
-如果
parent
并非是同一
Container
IllegalStateException
-如果任何组件添加到这个布局不同时在水平和垂直组
Container.getMinimumSize()
public void layoutContainer(Container parent)
layoutContainer
接口
LayoutManager
parent
-容器被设置
IllegalStateException
-如果任何组件添加到这个布局不同时在水平和垂直组
public void addLayoutComponent(Component component, Object constraints)
Component
已添加到父容器。你不应该直接调用这个方法,你应该使用的一个
Group
方法添加一个
Component
。
addLayoutComponent
接口
LayoutManager2
component
-添加组件
constraints
描述在放置组件
public Dimension maximumLayoutSize(Container parent)
maximumLayoutSize
接口
LayoutManager2
parent
-返回容器的大小
parent
最大尺寸
IllegalArgumentException
-如果
parent
并非是同一
Container
IllegalStateException
-如果任何组件添加到这个布局不同时在水平和垂直组
Container.getMaximumSize()
public float getLayoutAlignmentX(Container parent)
getLayoutAlignmentX
接口
LayoutManager2
parent
举办这次
LayoutManager
的
Container
.5
对齐;
IllegalArgumentException
-如果
parent
并非是同一
Container
public float getLayoutAlignmentY(Container parent)
getLayoutAlignmentY
接口
LayoutManager2
parent
举办这次
LayoutManager
的
Container
.5
对齐;
IllegalArgumentException
-如果
parent
并非是同一
Container
public void invalidateLayout(Container parent)
invalidateLayout
接口
LayoutManager2
parent
举办这次的布局管理器的
Container
IllegalArgumentException
-如果
parent
并非是同一
Container
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.