Swing SpringLayout類

SpringLayout類根據一組約束定位其關聯容器的子節點。

類聲明

以下是javax.swing.SpringLayout類的聲明 -

public class SpringLayout
   extends Object
      implements LayoutManager2

字段

以下是javax.swing.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 - 指定組件邊界矩形的寬度。

類構造函數

編號 構造函數 描述
1 SpringLayout() 創建一個新的SpringLayout對象。

類方法

編號 類方法 描述
1 void addLayoutComponent(Component component, Object constraints) 如果constraintsSpringLayout.Constraints的實例,則將約束與指定的組件相關聯。
2 void addLayoutComponent(String name, Component c) 沒有效果,因為此佈局管理器不使用每個組件的字串。
3 Spring getConstraint(String edgeName, Component c) 返回控制組件指定邊緣與其父級頂部或左側邊緣之間距離的Spring。
4 SpringLayout.Constraints getConstraints(Component c) 返回指定組件的約束。
5 float getLayoutAlignmentX(Container p) 返回0.5f(居中)。
6 float getLayoutAlignmentY(Container p) 返回0.5f(居中)。
7 void invalidateLayout(Container p) 使佈局無效,表明如果佈局管理器緩存了資訊,則應將其丟棄。
8 void layoutContainer(Container parent) 佈置指定的容器。
9 Dimension maximumLayoutSize(Container parent) 在給定包含的組件的情況下,計算指定容器的最大大小尺寸。
10 Dimension minimumLayoutSize(Container parent) 在給定容器所包含的組件的情況下,計算指定容器的最小尺寸。
11 Dimension preferredLayoutSize(Container parent) 在給定包含的組件的情況下,計算指定容器的首選大小尺寸。
12 void putConstraint(String e1, Component c1, int pad, String e2, Component c2) 將組件c1的邊緣e1鏈接到組件c2的邊緣e2,邊緣之間具有固定的距離。
13 void putConstraint(String e1, Component c1, Spring s, String e2, Component c2) 將組件c1的邊緣e1鏈接到組件c2的邊緣e2
14 void removeLayoutComponent(Component c) 刪除與指定組件關聯的約束。

方法繼承

該類繼承以下類中的方法 -

  • java.lang.Object

SpringLayout示例

使用編輯器創建以下Java程式:SpringLayoutDemo.java

package com.zaixian.layout;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class SpringLayoutDemo {
    private JFrame mainFrame;
    private JLabel headerLabel;
    private JLabel statusLabel;
    private JPanel controlPanel;

    public SpringLayoutDemo() {
        prepareGUI();
    }

    public static void main(String[] args) {
        SpringLayoutDemo swingLayoutDemo = new SpringLayoutDemo();
        swingLayoutDemo.showSpringLayoutDemo();
    }

    private void prepareGUI() {
        mainFrame = new JFrame("Java SWING SpringLayoutDemo(xuhuhu.com)");
        mainFrame.setSize(400, 400);
        mainFrame.setLayout(new GridLayout(3, 1));

        headerLabel = new JLabel("", JLabel.CENTER);
        statusLabel = new JLabel("", JLabel.CENTER);
        statusLabel.setSize(350, 100);

        mainFrame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent windowEvent) {
                System.exit(0);
            }
        });
        controlPanel = new JPanel();
        controlPanel.setLayout(new FlowLayout());

        mainFrame.add(headerLabel);
        mainFrame.add(controlPanel);
        mainFrame.add(statusLabel);
        mainFrame.setVisible(true);
    }

    private void showSpringLayoutDemo() {
        headerLabel.setText("Layout in action: SpringLayout");
        SpringLayout layout = new SpringLayout();

        JPanel panel = new JPanel();
        panel.setLayout(layout);
        JLabel label = new JLabel("輸入姓名: ");
        JTextField textField = new JTextField("", 15);
        panel.add(label);
        panel.add(textField);

        layout.putConstraint(SpringLayout.WEST, label, 5, SpringLayout.WEST, controlPanel);
        layout.putConstraint(SpringLayout.NORTH, label, 5, SpringLayout.NORTH, controlPanel);
        layout.putConstraint(SpringLayout.WEST, textField, 5, SpringLayout.EAST, label);
        layout.putConstraint(SpringLayout.NORTH, textField, 5, SpringLayout.NORTH, controlPanel);

        layout.putConstraint(SpringLayout.EAST, panel, 5, SpringLayout.EAST, textField);
        layout.putConstraint(SpringLayout.SOUTH, panel, 5, SpringLayout.SOUTH, textField);
        controlPanel.add(panel);
        mainFrame.setVisible(true);
    }
}

執行上面示例代碼,得到以下結果:

SpringLayout


上一篇: Swing LayoutManager介面 下一篇: Swing Menu類