SpringLayout根据一组约束来排列其关联容器的子代, 约束不过是两个组件边缘之间的水平和垂直距离。每个约束都由一个SpringLayout.Constraint对象表示。
SpringLayout容器的每个子容器以及容器本身都具有一组与之关联的约束。
每个边缘位置取决于另一个边缘的位置。如果添加了约束以创建新的边线, 则先前的绑定将被丢弃。 SpringLayout不会自动设置其管理的组件的位置。
嵌套类
修饰符和类型 | 类 | 描述 |
---|---|---|
静态类 | SpringLayout.Constraints | 它是一个Constraints对象, 有助于控制由SpringLayout控制的容器中组件的大小和位置变化 |
领域
修饰符和类型 | 领域 | 描述 |
---|---|---|
静态字符串 | BASELINE | 它指定组件的基线。 |
静态字符串 | EAST | 它指定组件边界矩形的右边缘。 |
静态字符串 | HEIGHT | 它指定组件边界矩形的高度。 |
static String | HORIZONTAL_CENTER | 它指定组件边界矩形的水平中心。 |
static String | NORTH | 它指定组件边界矩形的顶部边缘。 |
static String | SOUTH | 它指定组件边界矩形的底边。 |
static String | VERTICAL_CENTER | 它指定组件边界矩形的垂直中心。 |
static String | WEST | 它指定组件边界矩形的左边缘。 |
static String | WIDTH | 它指定组件边界矩形的宽度。 |
有用的方法
修饰符和类型 | 方法 | 描述 |
---|---|---|
void | addLayoutComponent(Component component, Object constraints) | 如果约束是SpringLayout的一个实例。约束, 将约束与指定的组件相关联。 |
void | addLayoutComponent(String name, Component c) | 没有效果, 因为此布局管理器不使用每个组件的字符串。 |
Spring | getConstraint(String edgeName, Component c) | 它返回一个弹簧, 该弹簧控制组件的指定边缘与其父对象的顶部或左侧边缘之间的距离。 |
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) | 给定其中包含的组件, 它用于计算指定容器的首选尺寸尺寸。 |
例
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("MySpringDemp");
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();
}
});
}
}
输出:
评论前必须登录!
注册