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)

如果约束是 SpringLayout.Constraints 的实例,则将约束与指定的组件相关联。

2

void addLayoutComponent(String name, Component c)

没有效果,因为此布局管理器不使用每个组件的字符串。

3

Spring getConstraint(String edgeName, Component c)

返回控制组件的指定边缘与其父对象的顶部或左侧边缘之间的距离的弹簧。

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 示例

D:/ > SWING > com > tutorialspoint > gui > 中使用您选择的任何编辑器创建以下 Java 程序

SwingLayoutDemo.java

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

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

   public SwingSpringLayout(){
      prepareGUI();
   }
   public static void main(String[] args){
      SwingSpringLayout swingLayoutDemo = new SwingSpringLayout();  
      swingLayoutDemo.showSpringLayoutDemo();       
   }
   private void prepareGUI(){
      mainFrame = new JFrame("Java SWING Examples");
      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("Enter Name: ");
      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);  
   } 
}

使用命令提示符编译程序。 转到 D:/ > SWING 并键入以下命令。

D:\SWING>javac com\tutorialspoint\gui\SwingLayoutDemo.java

如果没有报错,说明编译成功。 使用以下命令运行程序。

D:\SWING>java com.tutorialspoint.gui.SwingLayoutDemo

验证以下输出。

SWING SpringLayout

❮ SWING 布局