Java GroupLayout

GroupLayout将其组件分组并将其分层放置在Container中。分组是通过Group类的实例完成的。
Group是一个抽象类, 实现此Group类的两个具体类是SequentialGroup和ParallelGroup。
SequentialGroup依次将其子项依次放置, 其中ParallelGroup将其子项彼此对齐。
GroupLayout类提供诸如createParallelGroup()和createSequentialGroup()之类的方法来创建组。
GroupLayout独立对待每个轴。即, 存在代表水平轴的组和代表垂直轴的组。每个组件必须同时存在于水平和垂直组中, 否则在布局期间或请求最小, 首选或最大大小时会引发IllegalStateException。
嵌套类

修饰符和类型 描述
静态类 GroupLayout.Alignment 枚举ParallelGroup对齐其子级的可能方式。
class GroupLayout.Group 组为GroupLayout支持的两种类型的操作提供了基础:一个接一个地布置组件(SequentialGroup)或对齐组件(ParallelGroup)。
class GroupLayout.ParallelGroup 这是一个调整并调整其子级的组。
class GroupLayout.SequentialGroup 这是一个组, 一个接一个地依次定位和调整其元素的大小。
领域
修饰符和类型 领域 描述
静态整数 DEFAULT_SIZE 它指示组件或间隙的大小应用于特定范围值。
静态整数 PREFERRED_SIZE 它指示对于特定的范围值, 应使用组件或间隙的首选大小。
建设者
GroupLayout(Container host) 它为指定的Container创建一个GroupLayout。
有用的方法
修饰符和类型 领域 描述
void addLayoutComponent(Component component, Object constraints) 它通知组件已添加到父容器。
void addLayoutComponent(String name, 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轴的对齐方式。
Dimension maximumLayoutSize(Container parent) 它返回指定容器的最大大小。

public class GroupExample { public static void main(String[] args) { JFrame frame = new JFrame("GroupLayoutExample"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container contentPanel = frame.getContentPane(); GroupLayout groupLayout = new GroupLayout(contentPanel); contentPanel.setLayout(groupLayout); JLabel clickMe = new JLabel("Click Here"); JButton button = new JButton("This Button"); groupLayout.setHorizontalGroup( groupLayout.createSequentialGroup() .addComponent(clickMe) .addGap(10, 20, 100) .addComponent(button)); groupLayout.setVerticalGroup( groupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) .addComponent(clickMe) .addComponent(button)); frame.pack(); frame.setVisible(true); } }

【Java GroupLayout】输出:
Java GroupLayout

文章图片
例子2
import java.awt.Container; import javax.swing.GroupLayout; import javax.swing.JButton; import javax.swing.JFrame; import static javax.swing.GroupLayout.Alignment.*; public class GroupExample2 { public static void main(String[] args) { JFrame frame = new JFrame("GroupLayoutExample"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container myPanel = frame.getContentPane(); GroupLayout groupLayout = new GroupLayout(myPanel); groupLayout.setAutoCreateGaps(true); groupLayout.setAutoCreateContainerGaps(true); myPanel.setLayout(groupLayout); JButton b1 = new JButton("Button One"); JButton b2 = new JButton("Button Two"); JButton b3 = new JButton("Button Three"); groupLayout.setHorizontalGroup(groupLayout.createSequentialGroup() .addGroup(groupLayout.createParallelGroup(LEADING).addComponent(b1).addComponent(b3)) .addGroup(groupLayout.createParallelGroup(TRAILING).addComponent(b2))); groupLayout.setVerticalGroup(groupLayout.createSequentialGroup() .addGroup(groupLayout.createParallelGroup(BASELINE).addComponent(b1).addComponent(b2)) .addGroup(groupLayout.createParallelGroup(BASELINE).addComponent(b3))); frame.pack(); frame.setVisible(true); } }

输出:
Java GroupLayout

文章图片

    推荐阅读