Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| Swing 1.1
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## javax.swing
Class BoxLayout

    java.lang.Object
      |
      +--javax.swing.BoxLayout

Direct Known Subclasses:
  DefaultMenuLayout

public class BoxLayout
extends java.lang.Object
implements java.awt.LayoutManager2, java.io.Serializable

A layout manager that allows multiple components to be layed out either vertically or horizontally. The components will not wrap so, for example, a vertical arrangement of components will stay vertically arranged when the frame is resized.

Nesting multiple panels with different combinations of horizontal and vertical gives an effect similar to GridBagLayout, without the complexity. The diagram shows two panels arranged horizontally, each of which contains 3 components arranged vertically.

The Box container uses BoxLayout (unlike JPanel, which defaults to flow layout). You can nest multiple boxes and add components to them to get the arrangement you want.

The BoxLayout manager that places each of its managed components from left to right or from top to bottom. When you create a BoxLayout, you specify whether its major axis is the X axis (which means left to right placement) or Y axis (top to bottom placement). Components are arranged from left to right (or top to bottom), in the same order as they were added to the container.

Instead of using BoxLayout directly, many programs use the Box class. The Box class provides a lightweight container that uses a BoxLayout. Box also provides handy methods to help you use BoxLayout well.

BoxLayout attempts to arrange components at their preferred widths (for left to right layout) or heights (for top to bottom layout). For a left to right layout, if not all the components are the same height, BoxLayout attempts to make all the components as high as the highest component. If that's not possible for a particular component, then BoxLayout aligns that component vertically, according to the component's Y alignment. By default, a component has an Y alignment of 0.5, which means that the vertical center of the component should have the same Y coordinate as the vertical centers of other components with 0.5 Y alignment.

Similarly, for a vertical layout, BoxLayout attempts to make all components in the column as wide as the widest component; if that fails, it aligns them horizontally according to their X alignments.

Warning: Serialized objects of this class will not be compatible with future Swing releases. The current serialization support is appropriate for short term storage or RMI between applications running the same version of Swing. A future release of Swing will provide support for long term persistence.

See Also:
  `Box`, `Component.getAlignmentX()`, `Component.getAlignmentY()`, Serialized Form

Field Summary
`static int` | `X_AXIS` Specifies that components should be laid out left to right.
`static int` | `Y_AXIS` Specifies that components should be laid out top to buttom.

Constructor Summary
`BoxLayout(java.awt.Container target, int axis)` Creates a layout manager that will lay out components either left to right or top to bottom, as specified in the `axis` parameter.

Method Summary
`void` | `addLayoutComponent(java.awt.Component comp, java.lang.Object constraints)` Not used by this class.
`void` | `addLayoutComponent(java.lang.String name, java.awt.Component comp)` Not used by this class.
`float` | `getLayoutAlignmentX(java.awt.Container target)` Returns the alignment along the X axis for the container.
`float` | `getLayoutAlignmentY(java.awt.Container target)` Returns the alignment along the Y axis for the container.
`void` | `invalidateLayout(java.awt.Container target)` Indicates that a child has changed its layout related information, and thus any cached calculations should be flushed.
`void` | `layoutContainer(java.awt.Container target)` Called by the AWT when the specified container needs to be laid out.
`java.awt.Dimension` | `maximumLayoutSize(java.awt.Container target)` Returns the maximum dimensions the target container can use to lay out the components it contains.
`java.awt.Dimension` | `minimumLayoutSize(java.awt.Container target)` Returns the minimum dimensions needed to lay out the components contained in the specified target container.
`java.awt.Dimension` | `preferredLayoutSize(java.awt.Container target)` Returns the preferred dimensions for this layout, given the components in the specified target container.
`void` | `removeLayoutComponent(java.awt.Component comp)` Not used by this class.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### X_AXIS

    public static final int X_AXIS

  Specifies that components should be laid out left to right.

### Y_AXIS

    public static final int Y_AXIS

  Specifies that components should be laid out top to buttom.

Constructor Detail

### BoxLayout

    public BoxLayout(java.awt.Container target,
                     int axis)

  Creates a layout manager that will lay out components either left to right or top to bottom, as specified in the `axis` parameter.
  Parameters:
    `target` - the container that needs to be laid out
    `axis` - the axis to lay out components along. For left-to-right layout, specify `BoxLayout.X_AXIS`; for top-to-bottom layout, specify `BoxLayout.Y_AXIS`
  Throws:
    AWTError - if the value of `axis` is invalid

Method Detail

### invalidateLayout

    public void invalidateLayout(java.awt.Container target)

  Indicates that a child has changed its layout related information, and thus any cached calculations should be flushed.
  Specified by:
    invalidateLayout in interface java.awt.LayoutManager2
  Parameters:
    `target` - the affected container
  Throws:
    AWTError - if the target isn't the container specified to the BoxLayout constructor

### addLayoutComponent

    public void addLayoutComponent(java.lang.String name,
                                   java.awt.Component comp)

  Not used by this class.
  Parameters:
    `name` - the name of the component
    `comp` - the component

### removeLayoutComponent

    public void removeLayoutComponent(java.awt.Component comp)

  Not used by this class.
  Parameters:
    `comp` - the component

### addLayoutComponent

    public void addLayoutComponent(java.awt.Component comp,
                                   java.lang.Object constraints)

  Not used by this class.
  Specified by:
    addLayoutComponent in interface java.awt.LayoutManager2
  Parameters:
    `comp` - the component
    `constraints` - constraints

### preferredLayoutSize

    public java.awt.Dimension preferredLayoutSize(java.awt.Container target)

  Returns the preferred dimensions for this layout, given the components in the specified target container.
  Parameters:
    `target` - the container that needs to be laid out
  Returns:
    the dimensions >= 0 && <= Integer.MAX_VALUE
  Throws:
    AWTError - if the target isn't the container specified to the BoxLayout constructor
  See Also:
    `Container`, `minimumLayoutSize(java.awt.Container)`, `maximumLayoutSize(java.awt.Container)`

### minimumLayoutSize

    public java.awt.Dimension minimumLayoutSize(java.awt.Container target)

  Returns the minimum dimensions needed to lay out the components contained in the specified target container.
  Parameters:
    `target` - the container that needs to be laid out
  Returns:
    the dimensions >= 0 && <= Integer.MAX_VALUE
  Throws:
    AWTError - if the target isn't the container specified to the BoxLayout constructor
  See Also:
    `preferredLayoutSize(java.awt.Container)`, `maximumLayoutSize(java.awt.Container)`

### maximumLayoutSize

    public java.awt.Dimension maximumLayoutSize(java.awt.Container target)

  Returns the maximum dimensions the target container can use to lay out the components it contains.
  Specified by:
    maximumLayoutSize in interface java.awt.LayoutManager2
  Parameters:
    `target` - the container that needs to be laid out
  Returns:
    the dimenions >= 0 && <= Integer.MAX_VALUE
  Throws:
    AWTError - if the target isn't the container specified to the BoxLayout constructor
  See Also:
    `preferredLayoutSize(java.awt.Container)`, `minimumLayoutSize(java.awt.Container)`

### getLayoutAlignmentX

    public float getLayoutAlignmentX(java.awt.Container target)

  Returns the alignment along the X axis for the container. If the box is horizontal, the default alignment will be returned. Otherwise, the alignment needed to place the children along the X axis will be returned.
  Specified by:
    getLayoutAlignmentX in interface java.awt.LayoutManager2
  Parameters:
    `target` - the container
  Returns:
    the alignment >= 0.0f && <= 1.0f
  Throws:
    AWTError - if the target isn't the container specified to the BoxLayout constructor

### getLayoutAlignmentY

    public float getLayoutAlignmentY(java.awt.Container target)

  Returns the alignment along the Y axis for the container. If the box is vertical, the default alignment will be returned. Otherwise, the alignment needed to place the children along the Y axis will be returned.
  Specified by:
    getLayoutAlignmentY in interface java.awt.LayoutManager2
  Parameters:
    `target` - the container
  Returns:
    the alignment >= 0.0f && <= 1.0f
  Throws:
    AWTError - if the target isn't the container specified to the BoxLayout constructor

### layoutContainer

    public void layoutContainer(java.awt.Container target)

  Called by the AWT when the specified container needs to be laid out.
  Parameters:
    `target` - the container to lay out
  Throws:
    AWTError - if the target isn't the container specified to the BoxLayout constructor

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| Swing 1.1
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Submit a bug or feature
Java is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.
Copyright 1993-1998 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.