Java Swing教程 - Java Swing SpringLayout
javax.swing包中的SpringLayout类的实例表示一个SpringLayout管理器。
在SpringLayout管理器的上下文中的弹簧可以被拉伸,压缩或保持在其正常状态。
Spring对象有四个属性:最小值,首选值,最大值和当前值。
当被最大程度压缩时,弹簧具有其最小值。在其正常状态下,它具有其优选值。
在其最拉伸状态下,它具有其最大值。其在任何给定时间点的值是其当前值。
当弹簧的最小值,优选值和最大值相同时,它被称为支柱。
我们可以使用工厂方法创建一个spring。
要从头开始创建spring或strut,我们可以使用它的重载的constant()静态方法。
我们还可以使用组件的宽度或高度创建弹簧。
创建10像素的支柱Spring strutPadding = Spring.constant(10);
创建一个有10,25和50的弹簧分别作为其最小值,优选值和最大值。Spring springPadding = Spring.constant(10, 25, 50);
从名为c1的组件的宽度创建弹簧Spring s1 = Spring.width(c1);
从名为c1的组件的宽度创建弹簧...Spring s2 = Spring.height(c1);
Spring类有一些实用程序方法,让我们操纵spring属性。
Spring类有一些实用程序方法,让我们操纵spring属性。...Spring s3 = Spring.sum(s1, s2);
我们可以通过minus()方法从另一个减去一个弹簧来创建一个弹簧。
我们可以通过minus()方法从另一个减去一个弹簧来创建一个弹簧。...
使用scale()方法创建另一个弹簧的一部分。String fractionSpring = Spring.scale(s1, 0.40f);import java.awt.Container;
/*www.java2s.com*/
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SpringLayout;
public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame("SpringLayout");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container contentPane = frame.getContentPane();
// Set the content pane"s layout as SpringLayout SpringLayout springLayout = new SpringLayout();
contentPane.setLayout(springLayout);
// Add two JButtons to the content pane JButton b1 = new JButton("Button 1");
JButton b2 = new JButton("Little Bigger Button 2");
contentPane.add(b1);
contentPane.add(b2);
frame.pack();
frame.setVisible(true);
}
}
约束
下表列出了SpringLayout类中定义的常量。常量名称描述
NORTH它是y的同义词。 它是组件的顶部边缘。
WEST它是x的同义词。 它是组件的左边缘。
SOUTH它是组件的底部边缘。 其值与NORTH + HEIGHT相同。
EAST它是组件的右边缘。 它与WEST + WIDTH相同。
WIDTH组件的宽度。
HEIGHT组件的高度。
HORIZONTAL_CENTER它是组件的水平中心。 它与WEST + WIDTH / 2相同。
VERTICAL_CENTER它是组件的垂直中心。 它与NORTH + HEIGHT / 2相同。
BASELINE它是组件的基线。
以下代码显示了如何设置组件相对于容器或另一个组件的x和y约束。import java.awt.Container;
//www.java2s.com
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.Spring;
import javax.swing.SpringLayout;
public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame("SpringLayout");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container contentPane = frame.getContentPane();
// Set the content pane"s layout to a SpringLayout SpringLayout springLayout = new SpringLayout();
contentPane.setLayout(springLayout);
// Add two JButtons to the content pane JButton b1 = new JButton("Button 1");
JButton b2 = new JButton("Button Second");
// Create Constraints objects for b1 and b2 SpringLayout.Constraints b1c = new SpringLayout.Constraints();
SpringLayout.Constraints b2c = new SpringLayout.Constraints();
// Create a Spring object for y value for b1 and b2 Spring yPadding = Spring.constant(20);
// Set (10, 20) for (x, y) for b1 b1c.setX(Spring.constant(10));
b1c.setY(yPadding);
// Set (150, 20) for (x, y) for b2 b2c.setX(Spring.constant(150));
b2c.setY(yPadding);
// Use the Constraints object while adding b1 and b2 contentPane.add(b1, b1c);
contentPane.add(b2, b2c);
frame.pack();
frame.setVisible(true);
}
}
要在SpringLayout中设置组件的约束,我们也可以使用SpringLayout类的putConstraint()方法。
这里有两个版本的putConstraint()方法:void putConstraint(String targetEdge, Component targetComponent, int padding, String sourceEdge,Component sourceComponent)
void putConstraint(String targetEdge, Component targetComponent, Spring padding, String sourceEdge, Component sourceComponent)
第一个版本使用支柱。 int padding定义了一个固定弹簧,它将作为两个组件边缘之间的支柱(固定距离)。
第二个版本使用弹簧。
b2的左边缘的位置为5像素从b1的右边缘,使用以下方法。springLayout.putConstraint(SpringLayout.WEST, b2, 5, SpringLayout.EAST, b1);
要从内容窗格的左边缘设置b1的10个像素的左边缘。springLayout.putConstraint(SpringLayout.WEST, b1, 5, SpringLayout.WEST, contentPane);
例子
下面的代码展示了如何使用SpringLayout类的putConstraint()方法。import java.awt.Container;
/*www.java2s.com*/
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SpringLayout;
public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame("SpringLayout2");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container contentPane = frame.getContentPane();
SpringLayout springLayout = new SpringLayout();
contentPane.setLayout(springLayout);
JButton b1 = new JButton("Button 1");
JButton b2 = new JButton("Button Second");
contentPane.add(b1);
contentPane.add(b2);
springLayout.putConstraint(SpringLayout.WEST, b1, 10, SpringLayout.WEST, contentPane);
springLayout.putConstraint(SpringLayout.NORTH, b1, 20, SpringLayout.NORTH, contentPane);
springLayout.putConstraint(SpringLayout.WEST, b2, 10, SpringLayout.EAST, b1);
springLayout.putConstraint(SpringLayout.NORTH, b2, 20,SpringLayout.NORTH, contentPane);
springLayout.putConstraint(SpringLayout.SOUTH, contentPane, 10,SpringLayout.SOUTH, b1);
springLayout.putConstraint(SpringLayout.EAST, contentPane, 10, SpringLayout.EAST, b2);
frame.pack();
frame.setVisible(true);
}
}