Module jEdit

Class VariableGridLayout

java.lang.Object
org.gjt.sp.jedit.gui.VariableGridLayout
All Implemented Interfaces:
LayoutManager, LayoutManager2, Serializable

public class VariableGridLayout extends Object implements LayoutManager2, Serializable
A rectangular grid layout manager with variable cell sizes The container is divided into rectangles, and one component is placed in each rectangle. Each row is as large as the largest component in that row, and each column is as wide as the widest component in that column.

This behavior is basically the same as in java.awt.GridLayout, but with different row heights and column widths for each row/column.

For example, the following is an applet that lays out six buttons into three rows and two columns:

 import java.awt.*;
 import java.applet.Applet;
 public class ButtonGrid extends Applet {
     public void init() {
         setLayout(new VariableGridLayout(VariableGridLayout.FIXED_NUM_COLUMNS, 2));
         add(new Button("1"));
         add(new Button("2"));
         add(new Button("3"));
         add(new Button("4"));
         add(new Button("5"));
         add(new Button("6"));
     }
 }
 

Programmer's remark: VariableGridLayout could be faster, if it would reside in the package java.awt, because then it could access some package private fields of Container or Component. Instead, it has to call Component.getSize(), which allocates memory on the heap.

Todo:

  • Ability to span components over more than one cell horizontally and vertically.
Version:
1.5
Author:
Dirk Moebius, Björn "Vampire" Kautler
See Also:
  • Field Details

  • Constructor Details

    • VariableGridLayout

      public VariableGridLayout(int mode, int size, int hgap, int vgap, boolean takeSizesIntoAccount, Insets distanceToBorders)
      Creates a variable grid layout manager with the specified mode, size, horizontal and vertical gap, eventually taking minimum and maximum sizes into account when distributing free space, depending on takeSizesIntoAccount and the specified distance to the borders.
      Parameters:
      mode - The mode in which to operate. Either FIXED_NUM_ROWS or FIXED_NUM_COLUMNS
      size - The amount of rows for mode FIXED_NUM_ROWS or the amount of columns for mode FIXED_NUM_COLUMNS (>0)
      hgap - The horizontal space between cells (>=0)
      vgap - The vertical space between cells (>=0)
      takeSizesIntoAccount - Whether to take minimum and maximum sizes into account when distributing free space Javier Diaz Soto (jbds) warns in #2997417 that this may cause gui freeze and provides a patch
      distanceToBorders - The distances to the borders
      Throws:
      IllegalArgumentException - if mode is not either FIXED_NUM_ROWS or FIXED_NUM_COLUMNS or size is <= 0 or hgap or vgap is < 0
    • VariableGridLayout

      public VariableGridLayout(int mode, int size, int hgap, int vgap, boolean takeSizesIntoAccount)
      Creates a variable grid layout manager with the specified mode, size, horizontal and vertical gap, eventually taking minimum and maximum sizes into account when distributing free space, depending on takeSizesIntoAccount and zero distance to borders.
      Parameters:
      mode - The mode in which to operate. Either FIXED_NUM_ROWS or FIXED_NUM_COLUMNS
      size - The amount of rows for mode FIXED_NUM_ROWS or the amount of columns for mode FIXED_NUM_COLUMNS (>0)
      hgap - The horizontal space between cells (>=0)
      vgap - The vertical space between cells (>=0)
      takeSizesIntoAccount - Whether to take minimum and maximum sizes into account when distributing free space Javier Diaz Soto (jbds) warns in #2997417 that this may cause gui freeze and provides a patch
      Throws:
      IllegalArgumentException - if mode is not either FIXED_NUM_ROWS or FIXED_NUM_COLUMNS or size is <= 0 or hgap or vgap is < 0
    • VariableGridLayout

      public VariableGridLayout(int mode, int size, int hgap, int vgap)
      Creates a variable grid layout manager with the specified mode, size, horizontal and vertical gap, and zero distance to borders. The minimum and maximum Component sizes are not taken into account when distributing free space.
      Parameters:
      mode - The mode in which to operate. Either FIXED_NUM_ROWS or FIXED_NUM_COLUMNS
      size - The amount of rows for mode FIXED_NUM_ROWS or the amount of columns for mode FIXED_NUM_COLUMNS
      hgap - The horizontal space between cells
      vgap - The vertical space between cells
      Throws:
      IllegalArgumentException - if mode is not either FIXED_NUM_ROWS or FIXED_NUM_COLUMNS or size is<= 0 or hgap or vgap is < 0
    • VariableGridLayout

      public VariableGridLayout(int mode, int size)
      Creates a variable grid layout manager with the specified mode and size, zero horizontal and vertical gap, and zero distance to borders. Does not take minimum and maximum Component sizes into account when distributing free space.
      Parameters:
      mode - The mode in which to operate. Either FIXED_NUM_ROWS or FIXED_NUM_COLUMNS
      size - The amount of rows for mode FIXED_NUM_ROWS or the amount of columns for mode FIXED_NUM_COLUMNS
      Throws:
      IllegalArgumentException - if mode is not either FIXED_NUM_ROWS or FIXED_NUM_COLUMNS or size is <= 0
    • VariableGridLayout

      public VariableGridLayout()
      Creates a variable grid layout manager with mode FIXED_NUM_ROWS, number of rows == 1, zero horizontal and vertical gap, and zero distance to borders. Does not take minimum and maximum Component sizes into account when distributing free space.
  • Method Details