javax.swing包中的SpringLayout類的實(shí)例表示一個(gè)SpringLayout管理器。
在SpringLayout管理器的上下文中的彈簧可以被拉伸,壓縮或保持在其正常狀態(tài)。
Spring對(duì)象有四個(gè)屬性:最小值,首選值,最大值和當(dāng)前值。
當(dāng)被最大程度壓縮時(shí),彈簧具有其最小值。在其正常狀態(tài)下,它具有其優(yōu)選值。
在其最拉伸狀態(tài)下,它具有其最大值。其在任何給定時(shí)間點(diǎn)的值是其當(dāng)前值。
當(dāng)彈簧的最小值,優(yōu)選值和最大值相同時(shí),它被稱為支柱。
我們可以使用工廠方法創(chuàng)建一個(gè)spring。
要從頭開始創(chuàng)建spring或strut,我們可以使用它的重載的constant()靜態(tài)方法。
我們還可以使用組件的寬度或高度創(chuàng)建彈簧。
創(chuàng)建10像素的支柱
Spring strutPadding = Spring.constant(10);
創(chuàng)建一個(gè)有10,25和50的彈簧分別作為其最小值,優(yōu)選值和最大值。
Spring springPadding = Spring.constant(10, 25, 50);
從名為c1的組件的寬度創(chuàng)建彈簧
Spring s1 = Spring.width(c1);
從名為c1的組件的寬度創(chuàng)建彈簧...
Spring s2 = Spring.height(c1);
Spring類有一些實(shí)用程序方法,讓我們操縱spring屬性。
Spring類有一些實(shí)用程序方法,讓我們操縱spring屬性。...
Spring s3 = Spring.sum(s1, s2);
我們可以通過minus()方法從另一個(gè)減去一個(gè)彈簧來創(chuàng)建一個(gè)彈簧。
我們可以通過minus()方法從另一個(gè)減去一個(gè)彈簧來創(chuàng)建一個(gè)彈簧。...
使用scale()方法創(chuàng)建另一個(gè)彈簧的一部分。
String fractionSpring = Spring.scale(s1, 0.40f);
import java.awt.Container; /* ww w . j a va 2 s . c o m*/ 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 | 它是組件的基線。 |
以下代碼顯示了如何設(shè)置組件相對(duì)于容器或另一個(gè)組件的x和y約束。
import java.awt.Container; // w w w . j ava 2s. co m 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中設(shè)置組件的約束,我們也可以使用SpringLayout類的putConstraint()方法。
這里有兩個(gè)版本的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)
第一個(gè)版本使用支柱。 int padding定義了一個(gè)固定彈簧,它將作為兩個(gè)組件邊緣之間的支柱(固定距離)。
第二個(gè)版本使用彈簧。
b2的左邊緣的位置為5像素從b1的右邊緣,使用以下方法。
springLayout.putConstraint(SpringLayout.WEST, b2, 5, SpringLayout.EAST, b1);
要從內(nèi)容窗格的左邊緣設(shè)置b1的10個(gè)像素的左邊緣。
springLayout.putConstraint(SpringLayout.WEST, b1, 5, SpringLayout.WEST, contentPane);
下面的代碼展示了如何使用SpringLayout類的putConstraint()方法。
import java.awt.Container; /* www . j av a 2s . c o m*/ 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); } }
更多建議: