Java AWT | SpringLayout Class

A SpringLayout class in AWT(Abstract Window Toolkit) laid out of the children to its associated container, according to a set of Layout constraints. Each constraint is represented by a Spring object which controls the vertical or horizontal distance between two component edges. The edges can belong to any child of the container, or to the container itself. By default, SpringLayout creates constraints that make their associated component have the minimum, preferred, and maximum and actual value.

Constructor:

  • SpringLayout(): Used to constructs a new SpringLayout class.

Commonly Used Methods:

  • void addLayoutComponent(Component com, Object cons): If constraints is an instance of SpringLayout.Constraints, associates the constraints with the specified component.
  • getLayoutAlignmentX(Container c): Used to returns 0.5f (centered).
  • getLayoutAlignmentY(Container c): Used to returns 0.5f (centered).
  • getConstraint((String edgeName, Component c): Returns the spring controlling the distance between the specified edge of the component and the top or left edge of its parent.
  • getConstraint(Component c): Returns the constraints for the specified component.
  • layoutContainer(Container parent): Used to Lays out the specified container.

Below programs illustrate the SpringLayout class:

  • Program 1: Below program arranges the components in a JFrame. We create 1 JLabel components named “label” and create a 1 JTextField named “textfield” and create a 2 classes, one is JFrame class and another is SpringLayout class and then add them to the JFrame by the method add(). We set the visibility of the frame using setvisible() method. The layout is set by using setLayout() method.
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // Java program to show Example of SpringLayout.
    // in java. Importing different Package.
    import java.awt.Container;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JTextField;
    import javax.swing.SpringLayout;
      
    // construct a class springdemo
    public class Springdemo {
      
        // It is used to create and show GUI
        private static void createAndShowGUI()
        {
      
            // Creating Object of "JFrame" class
            JFrame frame = new JFrame("MySpringDemp");
      
            // Function to set default 
            // close operation of JFrame.
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      
            // to get content pane
            Container contentPane = frame.getContentPane();
      
            // Creating Object of "Springlayout" class
            SpringLayout layout = new SpringLayout();
      
            // to set content pane
            contentPane.setLayout(layout);
      
            // Initialization of object 
            // "label" of JLabel class.
            JLabel label = new JLabel("Label: ");
      
            // Initialization of object 
            // "label" of JLabel class.
            JTextField textField = new JTextField("Enter the text ", 15);
      
            // to add content pane of JLabel
            contentPane.add(label);
      
            // to add content pane of JTextField
            contentPane.add(textField);
      
            // It is used to put the layout
            // constraint in JFrame using springLayout class
            layout.putConstraint(SpringLayout.WEST, label, 
                       6, SpringLayout.WEST, contentPane);
                         
            layout.putConstraint(SpringLayout.NORTH, label, 
                       6, SpringLayout.NORTH, contentPane);
                         
            layout.putConstraint(SpringLayout.WEST, textField,
                                 6, SpringLayout.EAST, label);
                                   
            layout.putConstraint(SpringLayout.NORTH, textField, 
                           6, SpringLayout.NORTH, contentPane);
                             
            layout.putConstraint(SpringLayout.EAST, contentPane, 
                               6, SpringLayout.EAST, textField);
                                 
            layout.putConstraint(SpringLayout.SOUTH, contentPane, 
                               6, SpringLayout.SOUTH, textField);
      
            // Function to pack the JFrame.
            frame.pack();
      
            // Function to set visible status of JFrame.
            frame.setVisible(true);
        }
          
        // Main Method
        public static void main(String[] args)
        {
            javax.swing.SwingUtilities.invokeLater(new Runnable() 
            {
                  
                // create a class
                public void run()
                {
                    // to create and show GUI
                    createAndShowGUI();
                }
            });
        }
    }

    chevron_right

    
    

    Output:




  • Program 2: Below program arranges the components in a JFrame. We create 1 class named “springlayout class” and create a 4 JButton components named “b1″, “b2”, “b3”, “b4”, “b5” and then add them to the JFrame by the method add(). We set the visibility of the frame by using the method setvisible(). The layout is set by setLayout() method.

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // Java program to show Example of SpringLayout.
    // in java. Importing different Package.
    import java.awt.*;
    import javax.swing.*;
      
    // construct a class Springclassdemo
    public class Springclassdemo {
          
        // Main Method
        public static void main(String[] arguments)
        {
      
            // main window
            // Function to set the default look 
            // and feel decorated status of JFrame.
            JFrame.setDefaultLookAndFeelDecorated(true);
      
            // Creating Object of "JFrame" class
            JFrame frame = new JFrame("SpringLayoutExample Example");
      
            // Function to set the default 
            // close operation status of JFrame
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      
            // Function to set the 
            // size status of JFrame
            frame.setSize(300, 200);
      
            // to get the content pane
            Container content = frame.getContentPane();
      
            // Creating Object of "SpringLayout" class
            SpringLayout layout = new SpringLayout();
      
            // to set the layout class
            frame.setLayout(layout);
      
            // Initialization of object 
            // "b1" of JButton class.
            Component b1 = new JButton("GEEKS");
      
            // Initialization of object 
            // "b2" of JButton class.
            Component b2 = new JButton("GFG");
      
            // Initialization of object
            // "b3" of JButton class.
            Component b3 = new JButton("JAVA");
      
            // Initialization of object
            // "b4" of JButton class.
            Component b4 = new JButton("Sudo Placement");
      
            // Adding the JButton "b1" on frame
            frame.add(b1);
      
            // Adding the JButton "b2" on frame
            frame.add(b2);
      
            // Adding the JButton "b3" on frame
            frame.add(b3);
      
            // Adding the JButton "b4" on frame
            frame.add(b4);
      
            // It is used to put the layout
            // constraint in JFrame using 
            // springLayout class on b1 JButton
            layout.putConstraint(SpringLayout.WEST, b1, 
                       25, SpringLayout.WEST, content);
                         
            layout.putConstraint(SpringLayout.NORTH, b1, 
                        10, SpringLayout.NORTH, content);
      
            // It is used to put the layout
            // constraint in JFrame using 
            // springLayout class on b2 JButton
            layout.putConstraint(SpringLayout.WEST, b2, 
                       50, SpringLayout.WEST, content);
                         
            layout.putConstraint(SpringLayout.NORTH, b2,
                            10, SpringLayout.SOUTH, b1);
      
            // It is used to put the layout
            // constraint in JFrame using 
            // springLayout class on b3 JButton
            layout.putConstraint(SpringLayout.WEST, b3, 
                       75, SpringLayout.WEST, content);
                         
            layout.putConstraint(SpringLayout.NORTH, b3, 
                            10, SpringLayout.SOUTH, b2);
      
            // It is used to put the layout
            // constraint in JFrame using 
            // springLayout class on b4 JButton
            layout.putConstraint(SpringLayout.WEST, b4, 
                            15, SpringLayout.EAST, b1);
                              
            layout.putConstraint(SpringLayout.NORTH, b4,
                        10, SpringLayout.NORTH, content);
      
            // Function to set the
            // visible status of JFrame
            frame.setVisible(true);
        }
    }

    chevron_right

    
    

    Output:

Note: The above programs might not run in an online IDE. Please use an offline compiler.

Reference: https://docs.oracle.com/javase/7/docs/api/javax/swing/SpringLayout.html

Attention reader! Don’t stop learning now. Get hold of all the important Java and Collections concepts with the Fundamentals of Java and Java Collections Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.


Article Tags :
Practice Tags :


Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.