APIdia Launch Partner
Top Description Fields Constructors Methods
java.awt

public Class BorderLayout

extends Object
implements LayoutManager2, Serializable
Class Inheritance
All Implemented Interfaces
java.io.Serializable, java.awt.LayoutManager2, java.awt.LayoutManager
Imports
java.io.Serial

A border layout lays out a container, arranging and resizing its components to fit in five regions: north, south, east, west, and center. Each region may contain no more than one component, and is identified by a corresponding constant: NORTH, SOUTH, EAST, WEST, and CENTER. When adding a component to a container with a border layout, use one of these five constants, for example:
   Panel p = new Panel();
   p.setLayout(new BorderLayout());
   p.add(new Button("Okay"), BorderLayout.SOUTH);
As a convenience, BorderLayout interprets the absence of a string specification the same as the constant CENTER:
   Panel p2 = new Panel();
   p2.setLayout(new BorderLayout());
   p2.add(new TextArea());  // Same as p.add(new TextArea(), BorderLayout.CENTER);

In addition, BorderLayout supports the relative positioning constants, PAGE_START, PAGE_END, LINE_START, and LINE_END. In a container whose ComponentOrientation is set to ComponentOrientation.LEFT_TO_RIGHT, these constants map to NORTH, SOUTH, WEST, and EAST, respectively.

For compatibility with previous releases, BorderLayout also includes the relative positioning constants BEFORE_FIRST_LINE, AFTER_LAST_LINE, BEFORE_LINE_BEGINS and AFTER_LINE_ENDS. These are equivalent to PAGE_START, PAGE_END, LINE_START and LINE_END respectively. For consistency with the relative positioning constants used by other components, the latter constants are preferred.

Mixing both absolute and relative positioning constants can lead to unpredictable results. If you use both types, the relative constants will take precedence. For example, if you add components using both the NORTH and PAGE_START constants in a container whose orientation is LEFT_TO_RIGHT, only the PAGE_START will be laid out.

Note

Currently, BorderLayout does not support vertical orientations. The isVertical setting on the container's ComponentOrientation is not respected.

The components are laid out according to their preferred sizes and the constraints of the container's size. The NORTH and SOUTH components may be stretched horizontally; the EAST and WEST components may be stretched vertically; the CENTER component may stretch both horizontally and vertically to fill any space left over.

Here is an example of five buttons in a window laid out using the BorderLayout layout manager:

Diagram of a window
demonstrating BorderLayout. Each section of the BorderLayout contains a
Button corresponding to its position in the layout, one of: North, West,
Center, East, or South.

The code for this program is as follows:

import java.awt.BorderLayout; import java.awt.Button; import java.awt.EventQueue; import java.awt.Frame; public class BorderLayoutExample { public static void main(String[] args) throws Exception { EventQueue.invokeAndWait(() -> { Frame frame = new Frame("BorderLayout"); frame.setLayout(new BorderLayout()); frame.add(new Button("North"), BorderLayout.NORTH); frame.add(new Button("South"), BorderLayout.SOUTH); frame.add(new Button("East"), BorderLayout.EAST); frame.add(new Button("West"), BorderLayout.WEST); frame.add(new Button("Center"), BorderLayout.CENTER); frame.setSize(300, 300); frame.setVisible(true); }); } }
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.EventQueue;
import java.awt.Frame;

public class BorderLayoutExample {

    public static void main(String[] args) throws Exception {
        EventQueue.invokeAndWait(() -> {
            Frame frame = new Frame("BorderLayout");
            frame.setLayout(new BorderLayout());
            frame.add(new Button("North"), BorderLayout.NORTH);
            frame.add(new Button("South"), BorderLayout.SOUTH);
            frame.add(new Button("East"), BorderLayout.EAST);
            frame.add(new Button("West"), BorderLayout.WEST);
            frame.add(new Button("Center"), BorderLayout.CENTER);
            frame.setSize(300, 300);
            frame.setVisible(true);
        });
    }
}
Author
Arthur van Hoff
Since
1.0
See Also
java.awt.Container#add(String, Component), java.awt.ComponentOrientation

Field Summary

Modifier and TypeField and Description
public static final String
AFTER_LAST_LINE

Synonym for PAGE_END.

public static final String
AFTER_LINE_ENDS

Synonym for LINE_END.

public static final String
BEFORE_FIRST_LINE

Synonym for PAGE_START.

public static final String
BEFORE_LINE_BEGINS

Synonym for LINE_START.

pack-priv Component
center

Constant to specify components location to be the center portion of the border layout.

public static final String
CENTER

The center layout constraint (middle of container).

pack-priv Component
east

Constant to specify components location to be the east portion of the border layout.

public static final String
EAST

The east layout constraint (right side of container).

pack-priv Component
firstItem

A relative positioning constant, that can be used instead of north, south, east, west or center.

pack-priv Component
firstLine

A relative positioning constant, that can be used instead of north, south, east, west or center.

pack-priv int
hgap

Constructs a border layout with the horizontal gaps between components.

pack-priv Component
lastItem

A relative positioning constant, that can be used instead of north, south, east, west or center.

pack-priv Component
lastLine

A relative positioning constant, that can be used instead of north, south, east, west or center.

public static final String
LINE_END

The component goes at the end of the line direction for the layout.

public static final String
LINE_START

The component goes at the beginning of the line direction for the layout.

pack-priv Component
north

Constant to specify components location to be the north portion of the border layout.

public static final String
NORTH

The north layout constraint (top of container).

public static final String
PAGE_END

The component comes after the last line of the layout's content.

public static final String
PAGE_START

The component comes before the first line of the layout's content.

private static final long
serialVersionUID

Use serialVersionUID from JDK 1.1 for interoperability.

pack-priv Component
south

Constant to specify components location to be the south portion of the border layout.

public static final String
SOUTH

The south layout constraint (bottom of container).

pack-priv int
vgap

Constructs a border layout with the vertical gaps between components.

pack-priv Component
west

Constant to specify components location to be the west portion of the border layout.

public static final String
WEST

The west layout constraint (left side of container).

Constructor Summary

AccessConstructor and Description
public
BorderLayout()

Constructs a new border layout with no gaps between components.

public
BorderLayout(int
the horizontal gap.
hgap
,
int
the vertical gap.
vgap
)

Constructs a border layout with the specified gaps between components.

Method Summary

Modifier and TypeMethod and Description
public void
addLayoutComponent(Component
the component to be added.
comp
,
Object
an object that specifies how and where the component is added to the layout.
constraints
)

Implements java.awt.LayoutManager2.addLayoutComponent.

Adds the specified component to the layout, using the specified constraint object.

public void
addLayoutComponent(String name, Component comp)

Implements java.awt.LayoutManager.addLayoutComponent.

Deprecated replaced by addLayoutComponent(Component, Object).

If the layout manager uses a per-component string, adds the component comp to the layout, associating it with the string specified by name.

private Component
getChild(String
The desired absolute position, either NORTH, SOUTH, EAST, or WEST.
key
,
boolean
Is the component line direction left-to-right?
ltr
)

Get the component that corresponds to the given constraint location

public Object

Returns:

the constraint for the specified component, or null if component is null or is not present in this layout
getConstraints
(Component
the component to be queried
comp
)

Gets the constraints for the specified component

public int

Returns:

the horizontal gap between components
getHgap
()

Returns the horizontal gap between components.

public float
getLayoutAlignmentX(Container parent)

Implements java.awt.LayoutManager2.getLayoutAlignmentX.

Returns the alignment along the x axis.

public float
getLayoutAlignmentY(Container parent)

Implements java.awt.LayoutManager2.getLayoutAlignmentY.

Returns the alignment along the y axis.

public Component

Returns:

the component at the given location, or null if the location is empty
getLayoutComponent
(Object
the desired constraint, one of CENTER, NORTH, SOUTH, WEST, EAST, PAGE_START, PAGE_END, LINE_START, LINE_END
constraints
)

Gets the component that was added using the given constraint

public Component

Returns:

the component at the given location, or null if the location is empty
getLayoutComponent
(Container
the Container used to obtain the constraint location based on the target Container's component orientation.
target
,
Object
the desired absolute position, one of CENTER, NORTH, SOUTH, EAST, WEST
constraints
)

Returns the component that corresponds to the given constraint location based on the target Container's component orientation.

public int

Returns:

the vertical gap between components
getVgap
()

Returns the vertical gap between components.

public void
invalidateLayout(Container target)

Implements java.awt.LayoutManager2.invalidateLayout.

Invalidates the layout, indicating that if the layout manager has cached information it should be discarded.

public void
layoutContainer(Container
the container in which to do the layout.
target
)

Implements java.awt.LayoutManager.layoutContainer.

Lays out the container argument using this border layout.

public Dimension
maximumLayoutSize(Container
the component which needs to be laid out
target
)

Implements java.awt.LayoutManager2.maximumLayoutSize.

Returns the maximum dimensions for this layout given the components in the specified target container.

public Dimension

Returns:

the minimum dimensions needed to lay out the subcomponents of the specified container.
minimumLayoutSize
(Container
the container in which to do the layout.
target
)

Implements java.awt.LayoutManager.minimumLayoutSize.

Determines the minimum size of the target container using this layout manager.

public Dimension

Returns:

the preferred dimensions to lay out the subcomponents of the specified container.
preferredLayoutSize
(Container
the container in which to do the layout.
target
)

Implements java.awt.LayoutManager.preferredLayoutSize.

Determines the preferred size of the target container using this layout manager, based on the components in the container.

public void
removeLayoutComponent(Component
the component to be removed.
comp
)

Implements java.awt.LayoutManager.removeLayoutComponent.

Removes the specified component from this border layout.

public void
setHgap(int
the horizontal gap between components
hgap
)

Sets the horizontal gap between components.

public void
setVgap(int
the vertical gap between components
vgap
)

Sets the vertical gap between components.

public String

Returns:

a string representation of this border layout.
toString
()

Overrides java.lang.Object.toString.

Returns a string representation of the state of this border layout.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAllwaitwaitwait

Field Detail

AFTER_LAST_LINEback to summary
public static final String AFTER_LAST_LINE

Synonym for PAGE_END. Exists for compatibility with previous versions. PAGE_END is preferred.

Since
1.2
See Also
PAGE_END
AFTER_LINE_ENDSback to summary
public static final String AFTER_LINE_ENDS

Synonym for LINE_END. Exists for compatibility with previous versions. LINE_END is preferred.

Since
1.2
See Also
LINE_END
BEFORE_FIRST_LINEback to summary
public static final String BEFORE_FIRST_LINE

Synonym for PAGE_START. Exists for compatibility with previous versions. PAGE_START is preferred.

Since
1.2
See Also
PAGE_START
BEFORE_LINE_BEGINSback to summary
public static final String BEFORE_LINE_BEGINS

Synonym for LINE_START. Exists for compatibility with previous versions. LINE_START is preferred.

Since
1.2
See Also
LINE_START
centerback to summary
pack-priv Component center

Constant to specify components location to be the center portion of the border layout.

See Also
getChild(String, boolean), addLayoutComponent, getLayoutAlignmentX, getLayoutAlignmentY, removeLayoutComponent
CENTERback to summary
public static final String CENTER

The center layout constraint (middle of container).

eastback to summary
pack-priv Component east

Constant to specify components location to be the east portion of the border layout.

See Also
getChild(String, boolean), addLayoutComponent, getLayoutAlignmentX, getLayoutAlignmentY, removeLayoutComponent
EASTback to summary
public static final String EAST

The east layout constraint (right side of container).

firstItemback to summary
pack-priv Component firstItem

A relative positioning constant, that can be used instead of north, south, east, west or center. Please read Description for firstLine.

firstLineback to summary
pack-priv Component firstLine

A relative positioning constant, that can be used instead of north, south, east, west or center. mixing the two types of constants can lead to unpredictable results. If you use both types, the relative constants will take precedence. For example, if you add components using both the NORTH and BEFORE_FIRST_LINE constants in a container whose orientation is LEFT_TO_RIGHT, only the BEFORE_FIRST_LINE will be laid out. This will be the same for lastLine, firstItem, lastItem.

hgapback to summary
pack-priv int hgap

Constructs a border layout with the horizontal gaps between components. The horizontal gap is specified by hgap.

See Also
getHgap(), setHgap(int)
lastItemback to summary
pack-priv Component lastItem

A relative positioning constant, that can be used instead of north, south, east, west or center. Please read Description for firstLine.

lastLineback to summary
pack-priv Component lastLine

A relative positioning constant, that can be used instead of north, south, east, west or center. Please read Description for firstLine.

LINE_ENDback to summary
public static final String LINE_END

The component goes at the end of the line direction for the layout. For Western, left-to-right and top-to-bottom orientations, this is equivalent to EAST.

Since
1.4
See Also
java.awt.Component#getComponentOrientation
LINE_STARTback to summary
public static final String LINE_START

The component goes at the beginning of the line direction for the layout. For Western, left-to-right and top-to-bottom orientations, this is equivalent to WEST.

Since
1.4
See Also
java.awt.Component#getComponentOrientation
northback to summary
pack-priv Component north

Constant to specify components location to be the north portion of the border layout.

See Also
getChild(String, boolean), addLayoutComponent, getLayoutAlignmentX, getLayoutAlignmentY, removeLayoutComponent
NORTHback to summary
public static final String NORTH

The north layout constraint (top of container).

PAGE_ENDback to summary
public static final String PAGE_END

The component comes after the last line of the layout's content. For Western, left-to-right and top-to-bottom orientations, this is equivalent to SOUTH.

Since
1.4
See Also
java.awt.Component#getComponentOrientation
PAGE_STARTback to summary
public static final String PAGE_START

The component comes before the first line of the layout's content. For Western, left-to-right and top-to-bottom orientations, this is equivalent to NORTH.

Since
1.4
See Also
java.awt.Component#getComponentOrientation
serialVersionUIDback to summary
private static final long serialVersionUID

Use serialVersionUID from JDK 1.1 for interoperability.

Annotations
@Serial
southback to summary
pack-priv Component south

Constant to specify components location to be the south portion of the border layout.

See Also
getChild(String, boolean), addLayoutComponent, getLayoutAlignmentX, getLayoutAlignmentY, removeLayoutComponent
SOUTHback to summary
public static final String SOUTH

The south layout constraint (bottom of container).

vgapback to summary
pack-priv int vgap

Constructs a border layout with the vertical gaps between components. The vertical gap is specified by vgap.

See Also
getVgap(), setVgap(int)
westback to summary
pack-priv Component west

Constant to specify components location to be the west portion of the border layout.

See Also
getChild(String, boolean), addLayoutComponent, getLayoutAlignmentX, getLayoutAlignmentY, removeLayoutComponent
WESTback to summary
public static final String WEST

The west layout constraint (left side of container).

Constructor Detail

BorderLayoutback to summary
public BorderLayout()

Constructs a new border layout with no gaps between components.

BorderLayoutback to summary
public BorderLayout(int hgap, int vgap)

Constructs a border layout with the specified gaps between components. The horizontal gap is specified by hgap and the vertical gap is specified by vgap.

Parameters
hgap:int

the horizontal gap.

vgap:int

the vertical gap.

Method Detail

addLayoutComponentback to summary
public void addLayoutComponent(Component comp, Object constraints)

Implements java.awt.LayoutManager2.addLayoutComponent.

Adds the specified component to the layout, using the specified constraint object. For border layouts, the constraint must be one of the following constants: NORTH, SOUTH, EAST, WEST, or CENTER.

Most applications do not call this method directly. This method is called when a component is added to a container using the Container.add method with the same argument types.

Parameters
comp:Component

the component to be added.

constraints:Object

an object that specifies how and where the component is added to the layout.

Exceptions
IllegalArgumentException:
if the constraint object is not a string, or if it not one of the five specified constants.
Since
1.1
See Also
java.awt.Container#add(java.awt.Component, java.lang.Object)
addLayoutComponentback to summary
public void addLayoutComponent(String name, Component comp)

Implements java.awt.LayoutManager.addLayoutComponent.

Doc from java.awt.LayoutManager.addLayoutComponent.

Deprecated

replaced by addLayoutComponent(Component, Object).

If the layout manager uses a per-component string, adds the component comp to the layout, associating it with the string specified by name.

Annotations
@Deprecated
getChildback to summary
private Component getChild(String key, boolean ltr)

Get the component that corresponds to the given constraint location

Parameters
key:String

The desired absolute position, either NORTH, SOUTH, EAST, or WEST.

ltr:boolean

Is the component line direction left-to-right?

getConstraintsback to summary
public Object getConstraints(Component comp)

Gets the constraints for the specified component

Parameters
comp:Component

the component to be queried

Returns:Object

the constraint for the specified component, or null if component is null or is not present in this layout

Since
1.5
See Also
addLayoutComponent(java.awt.Component, java.lang.Object)
getHgapback to summary
public int getHgap()

Returns the horizontal gap between components.

Returns:int

the horizontal gap between components

Since
1.1
getLayoutAlignmentXback to summary
public float getLayoutAlignmentX(Container parent)

Implements java.awt.LayoutManager2.getLayoutAlignmentX.

Returns the alignment along the x axis. This specifies how the component would like to be aligned relative to other components. The value should be a number between 0 and 1 where 0 represents alignment along the origin, 1 is aligned the furthest away from the origin, 0.5 is centered, etc.

getLayoutAlignmentYback to summary
public float getLayoutAlignmentY(Container parent)

Implements java.awt.LayoutManager2.getLayoutAlignmentY.

Returns the alignment along the y axis. This specifies how the component would like to be aligned relative to other components. The value should be a number between 0 and 1 where 0 represents alignment along the origin, 1 is aligned the furthest away from the origin, 0.5 is centered, etc.

getLayoutComponentback to summary
public Component getLayoutComponent(Object constraints)

Gets the component that was added using the given constraint

Parameters
constraints:Object

the desired constraint, one of CENTER, NORTH, SOUTH, WEST, EAST, PAGE_START, PAGE_END, LINE_START, LINE_END

Returns:Component

the component at the given location, or null if the location is empty

Exceptions
IllegalArgumentException:
if the constraint object is not one of the nine specified constants
Since
1.5
See Also
addLayoutComponent(java.awt.Component, java.lang.Object)
getLayoutComponentback to summary
public Component getLayoutComponent(Container target, Object constraints)

Returns the component that corresponds to the given constraint location based on the target Container's component orientation. Components added with the relative constraints PAGE_START, PAGE_END, LINE_START, and LINE_END take precedence over components added with the explicit constraints NORTH, SOUTH, WEST, and EAST. The Container's component orientation is used to determine the location of components added with LINE_START and LINE_END.

Parameters
target:Container

the Container used to obtain the constraint location based on the target Container's component orientation.

constraints:Object

the desired absolute position, one of CENTER, NORTH, SOUTH, EAST, WEST

Returns:Component

the component at the given location, or null if the location is empty

Exceptions
IllegalArgumentException:
if the constraint object is not one of the five specified constants
NullPointerException:
if the target parameter is null
Since
1.5
See Also
addLayoutComponent(java.awt.Component, java.lang.Object)
getVgapback to summary
public int getVgap()

Returns the vertical gap between components.

Returns:int

the vertical gap between components

Since
1.1
invalidateLayoutback to summary
public void invalidateLayout(Container target)

Implements java.awt.LayoutManager2.invalidateLayout.

Invalidates the layout, indicating that if the layout manager has cached information it should be discarded.

layoutContainerback to summary
public void layoutContainer(Container target)

Implements java.awt.LayoutManager.layoutContainer.

Lays out the container argument using this border layout.

This method actually reshapes the components in the specified container in order to satisfy the constraints of this BorderLayout object. The NORTH and SOUTH components, if any, are placed at the top and bottom of the container, respectively. The WEST and EAST components are then placed on the left and right, respectively. Finally, the CENTER object is placed in any remaining space in the middle.

Most applications do not call this method directly. This method is called when a container calls its doLayout method.

Parameters
target:Container

the container in which to do the layout.

See Also
java.awt.Container, java.awt.Container#doLayout()
maximumLayoutSizeback to summary
public Dimension maximumLayoutSize(Container target)

Implements java.awt.LayoutManager2.maximumLayoutSize.

Returns the maximum dimensions for this layout given the components in the specified target container.

Parameters
target:Container

the component which needs to be laid out

See Also
Container, minimumLayoutSize, preferredLayoutSize
minimumLayoutSizeback to summary
public Dimension minimumLayoutSize(Container target)

Implements java.awt.LayoutManager.minimumLayoutSize.

Determines the minimum size of the target container using this layout manager.

This method is called when a container calls its getMinimumSize method. Most applications do not call this method directly.

Parameters
target:Container

the container in which to do the layout.

Returns:Dimension

the minimum dimensions needed to lay out the subcomponents of the specified container.

See Also
java.awt.Container, java.awt.BorderLayout#preferredLayoutSize, java.awt.Container#getMinimumSize()
preferredLayoutSizeback to summary
public Dimension preferredLayoutSize(Container target)

Implements java.awt.LayoutManager.preferredLayoutSize.

Determines the preferred size of the target container using this layout manager, based on the components in the container.

Most applications do not call this method directly. This method is called when a container calls its getPreferredSize method.

Parameters
target:Container

the container in which to do the layout.

Returns:Dimension

the preferred dimensions to lay out the subcomponents of the specified container.

See Also
java.awt.Container, java.awt.BorderLayout#minimumLayoutSize, java.awt.Container#getPreferredSize()
removeLayoutComponentback to summary
public void removeLayoutComponent(Component comp)

Implements java.awt.LayoutManager.removeLayoutComponent.

Removes the specified component from this border layout. This method is called when a container calls its remove or removeAll methods. Most applications do not call this method directly.

Parameters
comp:Component

the component to be removed.

See Also
java.awt.Container#remove(java.awt.Component), java.awt.Container#removeAll()
setHgapback to summary
public void setHgap(int hgap)

Sets the horizontal gap between components.

Parameters
hgap:int

the horizontal gap between components

Since
1.1
setVgapback to summary
public void setVgap(int vgap)

Sets the vertical gap between components.

Parameters
vgap:int

the vertical gap between components

Since
1.1
toStringback to summary
public String toString()

Overrides java.lang.Object.toString.

Returns a string representation of the state of this border layout.

Returns:String

a string representation of this border layout.