Java GroupLayout
精华
小牛编辑
137浏览
2023-03-14
1 Java GroupLayout的介绍
GroupLayout将其组件分组并将其分层放置在Container中。分组是通过Group类的实例完成的。
Group是一个抽象类,实现此Group类的两个具体类是SequentialGroup和ParallelGroup。
SequentialGroup依次将其子项依次放置,其中ParallelGroup将其子项彼此对齐。
GroupLayout类提供诸如createParallelGroup() 和createSequentialGroup() 之类的方法来创建组。
GroupLayout独立对待每个轴。即,存在代表水平轴的组和代表垂直轴的组。每个组件必须同时存在于水平和垂直组中,否则在布局期间或请求最小,首选或最大大小时会抛出IllegalStateException。
2 Java GroupLayout的内部类
内部类 | 描述 |
---|---|
static class GroupLayout.Alignment | 枚举ParallelGroup对齐其子级的可能方式。 |
class GroupLayout.Group | 组为GroupLayout支持的两种类型的操作提供了基础:一个接一个地布置组件(SequentialGroup)或对齐组件(ParallelGroup)。 |
class GroupLayout.ParallelGroup | 这是一个调整并调整其子级的组。 |
class GroupLayout.SequentialGroup | 这是一个组,一个接一个地依次定位和调整其元素的大小。 |
3 Java GroupLayout的字段
方法 | 描述 |
---|---|
static int DEFAULT_SIZE | 指示组件或间隙的大小应用于特定范围值。 |
static int PREFERRED_SIZE | 指示对于特定的范围值,应使用组件或间隙的首选大小。 |
4 Java GroupLayout的构造方法
构造方法 | 描述 |
---|---|
GroupLayout(Container host) | 为指定的Container创建一个GroupLayout。 |
5 Java 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。 |
getHonorsVisibility() | 返回在确定零件尺寸和位置时是否考虑零件的可见性。 |
getLayoutAlignmentX(Container parent) | 返回沿x轴的对齐方式。 |
getLayoutAlignmentY(Container parent) | 返回沿y轴的对齐方式。 |
maximumLayoutSize(Container parent) | 返回指定容器的最大大小。 |
6 Java GroupLayout的案例1
package cn.xnip;
/**
* 小牛知识库网: https://www.xnip.cn
*/
import javax.swing.*;
import java.awt.*;
public class GroupExample {
public static void main(String[] args) {
JFrame frame = new JFrame("GroupLayout案例-小牛知识库网");
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);
}
}
输出结果为:
7 Java GroupLayout的案例2
package cn.xnip;
/**
* 小牛知识库网: https://www.xnip.cn
*/
import java.awt.Container;
import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import static javax.swing.GroupLayout.Alignment.*;
public class GroupExample {
public static void main(String[] args) {
JFrame frame = new JFrame("GroupLayout案例-小牛知识库网");
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);
}
}
输出结果为: