Java SpringLayout
精华
小牛编辑
142浏览
2023-03-14
1 Java SpringLayout的介绍
SpringLayout 中 安排根据一组约束的其相关联的容器的孩子。Constraints都不过是双组分边缘之间的水平和垂直距离。每个约束都由一个SpringLayout.Constraint对象表示。
SpringLayout容器的每个子容器以及容器本身都具有一组与之关联的约束。
每个边缘位置取决于另一个边缘的位置。如果添加了约束以创建新的边线,则先前的绑定将被丢弃。SpringLayout不会自动设置其管理的组件的位置。
2 Java SpringLayout的内部类
内部类 | 描述 |
---|---|
static class SpringLayout.Constraints | 它是一个Constraints对象,有助于控制由SpringLayout控制的容器中组件的大小和位置变化 |
3 Java SpringLayout的字段
字段 | 描述 |
---|---|
static String BASELINE | 指定组件的基线。 |
static String EAST | 指定组件边界矩形的右边缘。 |
static String HEIGHT | 指定组件边界矩形的高度。 |
static String HORIZONTAL_CENTER | 指定组件边界矩形的水平中心。 |
static String NORTH | 指定组件边界矩形的顶部边缘。 |
static String SOUTH | 指定组件边界矩形的底边。 |
static String VERTICAL_CENTER | 指定组件边界矩形的垂直中心。 |
static String WEST | 指定组件边界矩形的左边缘。 |
static String WIDTH | 指定组件边界矩形的宽度。 |
4 Java SpringLayout的方法
方法 | 描述 |
---|---|
void addLayoutComponent(Component component, Object constraints) | 如果constraints是SpringLayout.Constraints的实例,则将约束与指定的组件相关联。 |
void addLayoutComponent(String name, Component c) | 没有效果,因为此布局管理器不使用每个组件的字符串。 |
Spring getConstraint(String edgeName, Component c) | 返回控制组件指定边缘与其父级顶部或左侧边缘之间距离的Spring。 |
SpringLayout.Constraints getConstraints(Component c) | 返回指定组件的约束。 |
float getLayoutAlignmentX(Container p) | 返回0.5f(居中)。 |
float getLayoutAlignmentY(Container p) | 返回0.5f(居中)。 |
void invalidateLayout(Container p) | 使布局无效,指示如果布局管理器已缓存信息,则应将其丢弃。 |
void layoutContainer(Container parent) | 对指定的容器进行布局。 |
Dimension maximumLayoutSize(Container parent) | 给定其中包含的组件,它用于计算指定容器的最大尺寸。 |
Dimension minimumLayoutSize(Container parent) | 给定其中包含的组件,它用于计算指定容器的最小尺寸。 |
Dimension preferredLayoutSize(Container parent) | 给定其中包含的组件,它用于计算指定容器的首选尺寸尺寸。 |
5 Java SpringLayout的案例
package cn.xnip;
/**
* 小牛知识库网: https://www.xnip.cn
*/
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.SpringLayout;
public class MySpringDemo {
private static void createAndShowGUI() {
JFrame frame = new JFrame("SpringLayout案例-小牛知识库网");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container contentPane = frame.getContentPane();
SpringLayout layout = new SpringLayout();
contentPane.setLayout(layout);
JLabel label = new JLabel("Label: ");
JTextField textField = new JTextField("My Text Field", 15);
contentPane.add(label);
contentPane.add(textField);
layout.putConstraint(SpringLayout.WEST, label,6,SpringLayout.WEST, contentPane);
layout.putConstraint(SpringLayout.NORTH, label,6,SpringLayout.NORTH, contentPane);
layout.putConstraint(SpringLayout.WEST, textField,6,SpringLayout.EAST, label);
layout.putConstraint(SpringLayout.NORTH, textField,6,SpringLayout.NORTH, contentPane);
layout.putConstraint(SpringLayout.EAST, contentPane,6,SpringLayout.EAST, textField);
layout.putConstraint(SpringLayout.SOUTH, contentPane,6,SpringLayout.SOUTH, textField);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
输出结果为: