acm.gui
Class TableLayout

java.lang.Object
  extended by acm.gui.TableLayout
All Implemented Interfaces:
LayoutManager, LayoutManager2, Serializable

public class TableLayout
extends Object
implements LayoutManager2, Serializable

This class implements a new LayoutManager that arranges components into a two-dimensional grid. The capabilities are analogous to those provide by the GridBagLayout class, although TableLayout is considerably easier to use. The constructor for the TableLayout class takes the number of rows and columns. Thus, the constructor call


      new TableLayout(3, 5)
 

creates a new TableLayout manager with three rows in the vertical dimension and five columns across the page. Components are added to the grid starting at the upper left, filling each horizontal row and then moving on to the next row down after the current one is filled.

The TableLayout manager also supports more fine-grained control over the formatting of tables by allowing you to specify constraints in the following form:


      constraint=value
 

For example, if you want to specify that a component occupies two columns in the grid, you would use the constraint


      "gridwidth=2"
 

Strings used as constraint objects can set several constraints at once by including multiple constraint/value pairs separated by spaces.

The TableLayout class accepts all constraints supported by GridBagLayout. The most common constraints are shown in the following table:

gridwidth=columns  or  gridheight=rows
 Indicates that this table cell should span the indicated number of columns or rows.
width=pixels  or  height=pixels
 The width specification indicates that the width of this column should be the specified number of pixels. If different widths are specified for cells in the same column, the column width is defined to be the maximum. In the absence of any width specification, the column width is the largest of the preferred widths. The height specification is interpreted symmetrically for row heights.
weightx=weight  or  weighty=weight
 If the total size of the table is less than the size of its enclosure, TableLayout will ordinarily center the table in the available space. If any of the cells, however, are given nonzero weightx or weighty values, the extra space is distributed along that axis in proportion to the weights specified. As in the GridBagLayout model, the weights are floating-point values and may therefore contain a decimal point.
fill=fill
 Indicates how the component in this cell should be resized if its preferred size is smaller than the cell size. The legal values are NONE, HORIZONTAL, VERTICAL, and BOTH, indicating the axes along which stretching should occur. The default is BOTH.
anchor=anchor
 If a component is not being filled along a particular axis, the anchor specification indicates where the component should be placed in its cell. The default value is CENTER, but any of the standard compass directions (NORTH, SOUTH, EAST, WEST, NORTHEAST, NORTHWEST, SOUTHEAST, or SOUTHWEST) may also be used.

See Also:
Serialized Form

Field Summary
static int BOTH
          Resize component in both directions
static int BOTTOM
          Align table vertically at the bottom of its container
static int CENTER
          Center table in the container
static int FILL
          Expand table to fill its container
static int HORIZONTAL
          Resize component in horizontal direction only
static int LEFT
          Align table horizontally at the left of its container
static int NONE
          Do not resize component
static int RIGHT
          Align table horizontally at the right of its container
static int TOP
          Align table vertically at the top of its container
static int VERTICAL
          Resize component in vertical direction only
 
Constructor Summary
TableLayout()
          Creates a new TableLayout object with no limits on the number of rows and columns.
TableLayout(int rows, int columns)
          Creates a new TableLayout object with the specified number of rows and columns.
TableLayout(int rows, int columns, int hgap, int vgap)
          Creates a new TableLayout object with the specified row count, column count, alignment, horizontal gap, and vertical gap.
 
Method Summary
 void addLayoutComponent(Component comp, Object constraints)
          Adds a component to the layout.
 void addLayoutComponent(String constraints, Component comp)
          Adds a component to the layout.
 int getColumnCount()
          Returns the number of columns in the table.
 TableConstraints getConstraints(Component comp)
          Returns a copy of the constraints requested for the specified component.
 int getDefaultFill()
          Returns the default fill parameter for components in the table.
 int getHgap()
          Returns the horizontal gap between components.
 int getHorizontalAlignment()
          Returns the horizontal alignment for the table.
 float getLayoutAlignmentX(Container target)
          Returns the alignment along the x-axis as described in the LayoutManager2 interface.
 float getLayoutAlignmentY(Container target)
          Returns the alignment along the y-axis as described in the LayoutManager2 interface.
 int getRowCount()
          Returns the number of rows in the table.
 int getVerticalAlignment()
          Returns the vertical alignment for the table.
 int getVgap()
          Returns the vertical gap between components.
 void invalidateLayout(Container target)
          Indicates that the layout is no longer valid.
 boolean isStrictGridBagModel()
          Returns true if this layout manager is treating multirow cells exactly as GridBagLayout does.
 void layoutContainer(Container target)
          Lays out the components in the target container.
protected  GridBagConstraints lookupConstraints(Component comp)
          Returns the constraints object for the specified component.
protected  TableConstraints lookupConstraints(Component comp, Container target)
          Returns the TableConstraints object actually applied to the specified component when it is laid out in the target container.
 Dimension maximumLayoutSize(Container target)
          Calculates the maximum size for the FrameLayout component when laid out in the target container.
 Dimension minimumLayoutSize(Container target)
          Calculates the minimum size for the FrameLayout component when laid out in the target container.
 Dimension preferredLayoutSize(Container target)
          Calculates the preferred size for the FrameLayout component when laid out in the target container.
 void removeLayoutComponent(Component comp)
          Removes the specified component from the layout.
 void setColumnCount(int columns)
          Resets the number of columns in the table.
 void setConstraints(Component comp, GridBagConstraints constraints)
          Sets the constraints for the component to a copy of the supplied constraints.
 void setConstraints(Component comp, String constraints)
          Sets the constraints for the component to the constraints specified by the string.
 void setDefaultFill(int fill)
          Sets the default fill parameter for components in the table.
 void setHgap(int pixels)
          Sets the horizontal gap between components.
 void setHorizontalAlignment(int align)
          Sets the horizontal alignment for the table.
 void setRowCount(int rows)
          Resets the number of rows in the table.
 void setStrictGridBagModel(boolean flag)
          Sets a flag indicating whether the layout manager should match the model used in GridBagLayout even when that interpretation seems wrong.
 void setVerticalAlignment(int align)
          Sets the vertical alignment for the table.
 void setVgap(int pixels)
          Sets the vertical gap between components.
 String toString()
          Creates a printable representation of the layout.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

BOTH

public static final int BOTH
Resize component in both directions

See Also:
Constant Field Values

BOTTOM

public static final int BOTTOM
Align table vertically at the bottom of its container

See Also:
Constant Field Values

CENTER

public static final int CENTER
Center table in the container

See Also:
Constant Field Values

FILL

public static final int FILL
Expand table to fill its container

See Also:
Constant Field Values

HORIZONTAL

public static final int HORIZONTAL
Resize component in horizontal direction only

See Also:
Constant Field Values

LEFT

public static final int LEFT
Align table horizontally at the left of its container

See Also:
Constant Field Values

NONE

public static final int NONE
Do not resize component

See Also:
Constant Field Values

RIGHT

public static final int RIGHT
Align table horizontally at the right of its container

See Also:
Constant Field Values

TOP

public static final int TOP
Align table vertically at the top of its container

See Also:
Constant Field Values

VERTICAL

public static final int VERTICAL
Resize component in vertical direction only

See Also:
Constant Field Values
Constructor Detail

TableLayout

public TableLayout()
Creates a new TableLayout object with no limits on the number of rows and columns.


TableLayout

public TableLayout(int rows,
                   int columns)
Creates a new TableLayout object with the specified number of rows and columns.

Parameters:
rows - The number of rows, or 0 for no limit
columns - The number of columns, or 0 for no limit

TableLayout

public TableLayout(int rows,
                   int columns,
                   int hgap,
                   int vgap)
Creates a new TableLayout object with the specified row count, column count, alignment, horizontal gap, and vertical gap.

Parameters:
rows - The number of rows, or 0 for no limit
columns - The number of columns, or 0 for no limit
hgap - The horizontal gap between columns
vgap - The vertical gap between rows
Method Detail

addLayoutComponent

public void addLayoutComponent(Component comp,
                               Object constraints)
Adds a component to the layout. The TableLayout class overrides this method to allow for string constraints.

Specified by:
addLayoutComponent in interface LayoutManager2
Parameters:
comp - The component to be added
constraints - The constraint object

addLayoutComponent

public void addLayoutComponent(String constraints,
                               Component comp)
Adds a component to the layout. Implements LayoutManager.

Specified by:
addLayoutComponent in interface LayoutManager
Parameters:
constraints - The constraint string
comp - The component to be added

getColumnCount

public int getColumnCount()
Returns the number of columns in the table.

Returns:
The number of columns

getConstraints

public TableConstraints getConstraints(Component comp)
Returns a copy of the constraints requested for the specified component. The constraints value is always converted to a TableConstraints so that clients can use this class in preference to GridBagConstraints without needing a type cast.

Parameters:
comp - The component whose constraints are requested
Returns:
A copy of the constraints object used to specify the layout

getDefaultFill

public int getDefaultFill()
Returns the default fill parameter for components in the table.

Returns:
The default fill parameter for components in the table

getHgap

public int getHgap()
Returns the horizontal gap between components.

Returns:
The horizontal gap between components

getHorizontalAlignment

public int getHorizontalAlignment()
Returns the horizontal alignment for the table.

Returns:
The horizontal alignment for the table

getLayoutAlignmentX

public float getLayoutAlignmentX(Container target)
Returns the alignment along the x-axis as described in the LayoutManager2 interface.

Specified by:
getLayoutAlignmentX in interface LayoutManager2
Parameters:
target - The container in which the layout is done
Returns:
A value between 0 and 1 indicating where this component should align

getLayoutAlignmentY

public float getLayoutAlignmentY(Container target)
Returns the alignment along the y-axis as described in the LayoutManager2 interface.

Specified by:
getLayoutAlignmentY in interface LayoutManager2
Parameters:
target - The container in which the layout is done
Returns:
A value between 0 and 1 indicating where this component should align

getRowCount

public int getRowCount()
Returns the number of rows in the table.

Returns:
The number of rows

getVerticalAlignment

public int getVerticalAlignment()
Returns the vertical alignment for the table.

Returns:
The vertical alignment for the table

getVgap

public int getVgap()
Returns the vertical gap between components.

Returns:
The vertical gap between components

invalidateLayout

public void invalidateLayout(Container target)
Indicates that the layout is no longer valid.

Specified by:
invalidateLayout in interface LayoutManager2
Parameters:
target - The container in which the layout is done

isStrictGridBagModel

public boolean isStrictGridBagModel()
Returns true if this layout manager is treating multirow cells exactly as GridBagLayout does.

Returns:
true if this manager is using the strict GridBagLayout model

layoutContainer

public void layoutContainer(Container target)
Lays out the components in the target container.

Specified by:
layoutContainer in interface LayoutManager
Parameters:
target - The container in which the layout is done

lookupConstraints

protected GridBagConstraints lookupConstraints(Component comp)
Returns the constraints object for the specified component.

Parameters:
comp - The component to be constrained
Returns:
The constraints object used to specify the layout

lookupConstraints

protected TableConstraints lookupConstraints(Component comp,
                                             Container target)
Returns the TableConstraints object actually applied to the specified component when it is laid out in the target container. In the result of this method the values of the gridx, gridx, gridwidth, and gridheight fields are filled in according to the actual position in the grid.

Parameters:
comp - The component to be constrained
target - The container in which the layout is done
Returns:
The constraints object actually applied to the layout

maximumLayoutSize

public Dimension maximumLayoutSize(Container target)
Calculates the maximum size for the FrameLayout component when laid out in the target container.

Specified by:
maximumLayoutSize in interface LayoutManager2
Parameters:
target - The container in which the layout is done
Returns:
The maximum dimensions for the layout

minimumLayoutSize

public Dimension minimumLayoutSize(Container target)
Calculates the minimum size for the FrameLayout component when laid out in the target container.

Specified by:
minimumLayoutSize in interface LayoutManager
Parameters:
target - The container in which the layout is done
Returns:
The minimum dimensions for the layout

preferredLayoutSize

public Dimension preferredLayoutSize(Container target)
Calculates the preferred size for the FrameLayout component when laid out in the target container.

Specified by:
preferredLayoutSize in interface LayoutManager
Parameters:
target - The container in which the layout is done
Returns:
The preferred dimensions for the layout

removeLayoutComponent

public void removeLayoutComponent(Component comp)
Removes the specified component from the layout.

Specified by:
removeLayoutComponent in interface LayoutManager
Parameters:
comp - The component to be removed

setColumnCount

public void setColumnCount(int columns)
Resets the number of columns in the table.

Parameters:
columns - The new number of columns

setConstraints

public void setConstraints(Component comp,
                           GridBagConstraints constraints)
Sets the constraints for the component to a copy of the supplied constraints.

Parameters:
comp - The component to be constrained
constraints - The constraints object used to specify the layout

setConstraints

public void setConstraints(Component comp,
                           String constraints)
Sets the constraints for the component to the constraints specified by the string.

Parameters:
comp - The component to be constrained
constraints - A string specifying the constraints

setDefaultFill

public void setDefaultFill(int fill)
Sets the default fill parameter for components in the table. The legal values are NONE, HORIZONTAL, VERTICAL, and BOTH.

Parameters:
fill - The default fill parameter for components in the table

setHgap

public void setHgap(int pixels)
Sets the horizontal gap between components.

Parameters:
pixels - The gap between components in pixels

setHorizontalAlignment

public void setHorizontalAlignment(int align)
Sets the horizontal alignment for the table. The legal values are CENTER, LEFT, RIGHT, and FILL.

Parameters:
align - The horizontal alignment for the table

setRowCount

public void setRowCount(int rows)
Resets the number of rows in the table.

Parameters:
rows - The new number of rows

setStrictGridBagModel

public void setStrictGridBagModel(boolean flag)
Sets a flag indicating whether the layout manager should match the model used in GridBagLayout even when that interpretation seems wrong. The differences show up in the following areas:
  • Calculation of cell size. GridBagLayout uses the minimum layout size of the component to determine the size of each cell; TableLayout uses the preferred size. In practice, these two values are often the same, but it seems that the preferred size makes considerably more sense in terms of how this layout is used.
  • Treatment of cells spanning several rows. In GridBagLayout, each new row begins after the last multirow cell in that row, even if there is space to its left. By default, TableLayout uses the HTML model in which the cells begin at the left margin unless that column is itself already occupied.

Parameters:
flag - true to use a strict GridBagLayout model

setVerticalAlignment

public void setVerticalAlignment(int align)
Sets the vertical alignment for the table. The legal values are CENTER, TOP, BOTTOM, and FILL.

Parameters:
align - The vertical alignment for the table

setVgap

public void setVgap(int pixels)
Sets the vertical gap between components.

Parameters:
pixels - The gap between components in pixels

toString

public String toString()
Creates a printable representation of the layout.

Overrides:
toString in class Object