ise.java.awt
Class LambdaLayout

java.lang.Object
  extended by ise.java.awt.KappaLayout
      extended by ise.java.awt.LambdaLayout
All Implemented Interfaces:
java.awt.LayoutManager, java.awt.LayoutManager2, java.io.Serializable

public class LambdaLayout
extends KappaLayout
implements java.awt.LayoutManager2, java.io.Serializable

LambdaLayout, a Java layout manager.
Copyright (C) 2001, Dale Anson

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

LambdaLayout -- based on KappaLayout, but handles stretching of components differently. From e-mail I've received about KappaLayout, many people are expecting a different stretching behavior when resizing a Frame. LambdaLayout has this expected behaviour, in that components with the 's' constraint set to 'w', 'h', or 'wh'/'hw' will resize as the frame resizes. Like KappaLayout, LambdaLayout respects the preferred size of components and will not shrink a component to less than it's preferred size.
Example use:
This will put a button on a panel in the top of its cell, stretched to fill the cell width, with a 3 pixel pad:
Panel p = new Panel(new LambdaLayout()); Button b = new Button("OK"); p.add(b, "0, 0, 1, 2, 2, w, 3");
The constraints string has this layout:
"x, y, w, h, a, s, p"
defined as follows:

Parameters may be omitted (default values will be used), e.g., p.add(new Button("OK), "1,4,,,w,");
which means put the button at column 1, row 4, default 1 column wide, default 1 row tall, stretch to fit width of column, no padding.
Spaces in the parameter string are ignored, so these are identical:
p.add(new Button("OK), "1,4,,,w,");
p.add(new Button("OK), " 1, 4, , , w");

Rather than use a constraints string, a Constraints object may be used directly, similar to how GridBag uses a GridBagConstraint. E.g,
Panel p = new Panel();
LambdaLayout tl = new LambdaLayout();
p.setLayout(tl);
LambdaLayout.Constraints con = tl.getConstraint();
con.x = 1;
con.y = 2;
con.w = 2;
con.h = 2;
con.s = "wh";
panel.add(new Button("OK"), con);
con.x = 3;
panel.add(new Button("Cancel"), con);

Note that the same Constraints can be reused, thereby reducing the number of objects created.

Author:
Dale Anson
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class ise.java.awt.KappaLayout
KappaLayout.Constraints, KappaLayout.Strut
 
Field Summary
 
Fields inherited from class ise.java.awt.KappaLayout
_0dim, _col_count, _col_widths, _components, _constraints, _preferred_height, _preferred_width, _row_count, _row_heights, _same_height_rows, _same_width_cols, _size_unknown, _stretch, _table, E, N, NE, NW, R, S, SE, SW, W
 
Constructor Summary
LambdaLayout()
           
 
Method Summary
 void layoutContainer(java.awt.Container parent)
          Required by LayoutManager, does all the real layout work.
 
Methods inherited from class ise.java.awt.KappaLayout
addLayoutComponent, addLayoutComponent, calculateDimensions, createConstraint, createHorizontalStrut, createHorizontalStrut, createStrut, createStrut, createVerticalStrut, createVerticalStrut, getLayoutAlignmentX, getLayoutAlignmentY, invalidateLayout, makeColumnsSameWidth, makeColumnsSameWidth, makeColumnsSameWidth, makeRowsSameHeight, makeRowsSameHeight, makeRowsSameHeight, maximumLayoutSize, minimumLayoutSize, preferredLayoutSize, removeLayoutComponent, setColumnWidth, setRowHeight, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.awt.LayoutManager2
addLayoutComponent, getLayoutAlignmentX, getLayoutAlignmentY, invalidateLayout, maximumLayoutSize
 
Methods inherited from interface java.awt.LayoutManager
addLayoutComponent, minimumLayoutSize, preferredLayoutSize, removeLayoutComponent
 

Constructor Detail

LambdaLayout

public LambdaLayout()
Method Detail

layoutContainer

public void layoutContainer(java.awt.Container parent)
Required by LayoutManager, does all the real layout work. This is the only method in LambdaLayout, all other methods are in KappaLayout.

Specified by:
layoutContainer in interface java.awt.LayoutManager
Overrides:
layoutContainer in class KappaLayout


Copyright © 2000 Dale Anson, All Rights Reserved.
KappaLayout Home Page