SpringLayout

优质
小牛编辑
140浏览
2023-12-01

介绍 (Introduction)

SpringLayout类根据一组约束定位其关联容器的子SpringLayout

Class 声明 (Class Declaration)

以下是javax.swing.SpringLayout类的声明 -

public class SpringLayout
   extends Object
      implements LayoutManager2

字段 (Field)

以下是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 - 指定组件边界矩形的宽度。

类构造函数 (Class Constructors)

Sr.No.构造函数和描述
1

SpringLayout()

创建一个新的SpringLayout。

Class Methods

Sr.No.方法和描述
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)

删除与指定组件关联的约束。

方法继承 (Methods Inherited)

该类继承以下类中的方法 -

  • java.lang.Object

SpringLayout示例

使用您选择的任何编辑器创建以下Java程序,例如D:/ 》 SWING 》 com 》 xnip 》 gui 》

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\xnip\gui\SwingLayoutDemo.java

如果没有错误发生,则表示编译成功。 使用以下命令运行该程序。

D:\SWING>java cn.xnip.gui.SwingLayoutDemo

验证以下输出。

SWING SpringLayout