SWING - GroupLayout Class
Introduction
The class GroupLayout hierarchically groups the components in order to position them in a Container.
Class Declaration
Following is the declaration for javax.swing.GroupLayout class −
public class GroupLayout
extends Object
implements LayoutManager2
Field
Following are the fields for javax.swing.GroupLayout class −
static int DEFAULT_SIZE − Indicates the size from the component or the gap should be used for a particular range value.
static int PREFERRED_SIZE − Indicates the preferred size from the component or the gap should be used for a particular range value.
Class Constructors
| Sr.No. | Constructor & Description |
|---|---|
| 1 |
GroupLayout(Container host) Creates a GroupLayout for the specified Container. |
Class Methods
| Sr.No. | Method & Description |
|---|---|
| 1 |
void addLayoutComponent(Component component, Object constraints) Notification that a Component has been added to the parent container. |
| 2 |
void addLayoutComponent(String name, Component component) Notification that a Component has been added to the parent container. |
| 3 |
GroupLayout.ParallelGroup createBaselineGroup(boolean resizable, boolean anchorBaselineToTop) Creates and returns a ParallelGroup that aligns it's elements along the baseline. |
| 4 |
GroupLayout.ParallelGroup createParallelGroup() Creates and returns a ParallelGroup with an alignment of Alignment.LEADING. |
| 5 |
GroupLayout.ParallelGroup createParallelGroup(GroupLayout.Alignment alignment) Creates and returns a ParallelGroup with the specified alignment. |
| 6 |
GroupLayout.ParallelGroup createParallelGroup(GroupLayout.Alignment alignment, boolean resizable) Creates and returns a ParallelGroup with the specified alignment and resize behavior. |
| 7 |
GroupLayout.SequentialGroup createSequentialGroup() Creates and returns a SequentialGroup. |
| 8 |
boolean getAutoCreateContainerGaps() Returns true if the gaps between the container and the components that border the container are automatically created. |
| 9 |
boolean getAutoCreateGaps() Returns true if the gaps between the components are automatically created. |
| 10 |
boolean getHonorsVisibility() Returns whether the component visiblity is considered when sizing and positioning the components. |
| 11 |
float getLayoutAlignmentX(Container parent) Returns the alignment along the x axis. |
| 12 |
float getLayoutAlignmentY(Container parent) Returns the alignment along the y axis. |
| 13 |
LayoutStyle getLayoutStyle() Returns the LayoutStyle used for calculating the preferred gap between the components. |
| 14 |
void invalidateLayout(Container parent) Invalidates the layout, indicating that if the layout manager has cached information it should be discarded. |
| 15 |
void layoutContainer(Container parent) Lays out the specified container. |
| 16 |
void linkSize(Component... components) Forces the specified components to have the same size regardless of their preferred, minimum, or maximum sizes. |
| 17 |
void linkSize(int axis, Component... components) Forces the specified components to have the same size along the specified axis regardless of their preferred, minimum, or maximum sizes. |
| 18 |
Dimension maximumLayoutSize(Container parent) Returns the maximum size for the specified container. |
| 19 |
Dimension minimumLayoutSize(Container parent) Returns the minimum size for the specified container. |
| 20 |
Dimension preferredLayoutSize(Container parent) Returns the preferred size for the specified container. |
| 21 |
void removeLayoutComponent(Component component) Notifies that a Component has been removed from the parent container. |
| 22 |
void replace(Component existingComponent, Component newComponent) Replaces an existing component with a new one. |
| 23 |
void setAutoCreateContainerGaps(boolean autoCreateContainerPadding) Sets whether a gap between the container and the components that touch the border of the container should automatically be created. |
| 24 |
void setAutoCreateGaps(boolean autoCreatePadding) Sets whether a gap between the components should automatically be created. |
| 25 |
void setHonorsVisibility(boolean honorsVisibility) Sets whether the component visiblity is considered when sizing and positioning the components. |
| 26 |
void setHonorsVisibility(Component component, Boolean honorsVisibility) Sets whether the component's visiblity is considered for sizing and positioning. |
| 27 |
void setHorizontalGroup(GroupLayout.Group group) Sets the Group that positions and sizes the components along the horizontal axis. |
| 28 |
void setLayoutStyle(LayoutStyle layoutStyle) Sets the LayoutStyle used to calculate the preferred gaps between the components. |
| 29 |
void setVerticalGroup(GroupLayout.Group group) Sets the Group that positions and sizes the components along the vertical axis. |
| 30 |
String toString() Returns a string representation of this GroupLayout. |
Methods Inherited
This class inherits methods from the following class −
- java.lang.Object
GroupLayout Example
Create the following Java program using any editor of your choice in say D:/ > SWING > com > tutorialspoint > gui >
SwingLayoutDemo.java
package com.tutorialspoint.gui;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class SwingLayoutDemo {
private JFrame mainFrame;
private JLabel headerLabel;
private JLabel statusLabel;
private JPanel controlPanel;
private JLabel msglabel;
public SwingLayoutDemo(){
prepareGUI();
}
public static void main(String[] args){
SwingLayoutDemo swingLayoutDemo = new SwingLayoutDemo();
swingLayoutDemo.showGroupLayoutDemo();
}
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 showGroupLayoutDemo(){
headerLabel.setText("Layout in action: GroupLayout");
JPanel panel = new JPanel();
// panel.setBackground(Color.darkGray);
panel.setSize(200,200);
GroupLayout layout = new GroupLayout(panel);
layout.setAutoCreateGaps(true);
layout.setAutoCreateContainerGaps(true);
JButton btn1 = new JButton("Button 1");
JButton btn2 = new JButton("Button 2");
JButton btn3 = new JButton("Button 3");
layout.setHorizontalGroup(layout.createSequentialGroup()
.addComponent(btn1)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(
GroupLayout.Alignment.LEADING)
.addComponent(btn2)
.addComponent(btn3))));
layout.setVerticalGroup(layout.createSequentialGroup()
.addComponent(btn1)
.addComponent(btn2)
.addComponent(btn3));
panel.setLayout(layout);
controlPanel.add(panel);
mainFrame.setVisible(true);
}
}
Compile the program using the command prompt. Go to D:/ > SWING and type the following command.
D:\SWING>javac com\tutorialspoint\gui\SwingLayoutDemo.java
If no error occurs, it means the compilation is successful. Run the program using the following command.
D:\SWING>java com.tutorialspoint.gui.SwingLayoutDemo
Verify the following output.