BoxLayout in Java Swing

Box layout arranges the components either horizontal or vertical.  javax.swing package  has a class BoxLayout   that is used to create the BoxLayout managers and Boxes. You use many classes to arrange the components in more sophisticated way. Several supporting classes are typically used javax.swing.BoxLayout, javax.swing.Box, and javax.swing.Box.Filler.  

there is following coonstructor to create the BoxLayout instance.
BoxLayout(Container target, int axis)
It creates a layout manager that will lay out components along the given axis. Here target is the container’s reference on which this Layout has to be applied and axis is the integer constant specifying the y-axis or x-axis.

here Box is the another lightweight container that uses a BoxLayout object as its layout manager. Box provides several class methods that are useful for containers using BoxLayout -- even non-Box containers. To create an instance of this container we simply pass the desired alignment to its constructor. To create an instance of this container we simply pass the desired alignment to its constructor.

There are some filler components used to fill the space between components. These are non visible empty components used to cover the specified space from the container. 

The Box class provides convenient static methods for the creation of three different variations: glue, struts, and rigid areas.

createHorizontalGlue(), createVerticalGlue(): returns a component which fills the space between its neighboring components, pushing them aside to occupy all available space (this functionality is more analogous to a spring than it is to glue).

createHorizontalStrut(int width), createVerticalStrut(int height): returns a fixed-width (height) component which provides a fixed gap between its neighbors.

createRigidArea(Dimension d): returns an invisible component of fixed width and height.

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

class SwingDemo5
{
    public static void main(String ar[])
    {
        JFrame f=new JFrame("New Frame");
        Container c=f.getContentPane();
        
        Box b1=Box.createVerticalBox();
        //Box b1=Box.createHorizontalBox();
        b1.add(Box.createVerticalGlue());
        JPanel p1=new JPanel();p1.setBackground(new Color(134,200,200));
        b1.add(p1);
        
        JPanel p2=new JPanel();p2.setBackground(new Color(200,134,255));
        b1.add(p2);
        b1.add(Box.createVerticalStrut(20));
        JPanel p3=new JPanel();p3.setBackground(Color.gray.darker());
        b1.add(p3);
        
        c.add(b1);
        
        f.setBounds(100,100,400,300);
        f.setVisible(true);
    }
}

No comments:

Popular Posts