All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.darwinsys.swingui.layout.ColumnLayout Maven / Gradle / Ivy

package com.darwinsys.swingui.layout;

import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.LayoutManager;

/**
 * 

* ColumnLayout, a Single-Column Layout Manager for AWT/Swing. * Sort of a cross between BoxLayout and GridLayout(0, x). * Displays components in a single row or column based on the * alignment given to the constructor, with optional padding.

*

* There is a utility method for adding space between the previous * and next components, which (like Menu.addSeparator()) adds a * fixed-size non-visible component between two added components.

*

* Note: The current version of ColumnLayout doesn't resize.

* * @author Ian Darwin, http://www.darwinsys.com/ */ public class ColumnLayout implements LayoutManager { /** Constant for X AXIS (horizontal column) alignment */ public static final int X_AXIS = 'x'; /** Constant for Y AXIS (vertical column) alignment */ public static final int Y_AXIS = 'y'; /** The alignment for this ColumnLayout */ protected final int alignment; /** The X padding for this ColumnLayout */ protected final int hPadding; // blank final /** The Y padding for this ColumnLayout */ protected final int vPadding; // blank final /** The minimum width of each component */ protected int minw; /** The minimum height of each component */ protected int minh; /** The list of components */ Component[] curComps; /** Construct a ColumnLayout given only an alignment. * @param dirn The direction */ public ColumnLayout(int dirn) { this(dirn, 0, 0); } /** Construct a ColumnLayout given an alignment and a padding amount. * @param dirn The direction * @param pad The padding, in px */ public ColumnLayout(int dirn, int pad) { this(dirn, pad, pad); } /** Construct a ColumnLayout given an alignment and h,v padding amounts. * @param dirn The direction * @param hpad The horizontal padding, in px * @param vpad The vertical padding, in px */ public ColumnLayout(int dirn, int hpad, int vpad) { alignment = dirn; hPadding = hpad; vPadding = vpad; } /** * Called by AWT when the user uses the form add(name, Component). * Adds the specified component with the specified name to the layout. * Not necessary to use this form. * @param name String with location for component c * @param c Component to be added. */ public void addLayoutComponent(String name, Component c) { System.err.println("don't use add(component,name) with ColumnLayout"); } /** * Called by AWT to lay out the components * in the target Container at its current size. * @param target Container whose components are to be laid out. */ public void layoutContainer(Container target) { //System.out.println("ColumnLayout.layoutContainer() called."); doLayout(target); } /** Used internally: compute the layout and the maximal preferred * width and height *
* TODO XXX NEED TO SCALE BY TARGSIZE? * @param target The target container * @return The computed size */ protected Dimension doLayout(Container target) { // Pass 1 - get preferred sizes minw = minh = 0; curComps = target.getComponents(); for (int i = 0; i




© 2015 - 2024 Weber Informatics LLC | Privacy Policy