Java: Summary - GUI Layouts 2 - BoxLayout, CardLayout, GridbagLayout
Layout, layo, becomes that layout manager for container p (a JPanel or Container) with the following.
p.setLayout(layo);
Layouts (BoxLayout, CardLayout, GridbagLayout) | ||
BoxLayout, Box - Lays out components in single row or col. Add "glue" and rigid areas to control spacing. | ||
boxl = | new BoxLayout(p, dir); | Creates layout for container p. dir is BoxLayout.X_AXIS BoxLayout.Y_AXIS . Note: must have already created p. |
box = | new Box(dir); | Creates a Container with vertical or horizontal layout. |
p.add(widget); | Adds widget to the next position. | |
These static Box methods create useful spacing components, which can be used in other layouts. | ||
Box.createVerticalStrut(n) | Creates a vertical spacer n pixels high. | |
Box.createHorizontalStrut(n) | Creates a horizontal spacer n pixels wide. | |
Box.createRigidArea(dim) | Spacer with width and height. dim is Dimension object, eg, new Dimension(10, 0) . | |
Box.createHorizontalGlue() | Creates expandable horizontal space. | |
Box.createVerticalGlue() | Creates expandable vertical space. | |
new Box.Filler(mn,prf,mx) | Creates a Box.Filler with min, preferred, and max sizes, each is Dimension object. | |
CardLayout - Panels are placed on top of each other like stack of cards -- only one visible at a time. | ||
Used to produce installer or wizard style interface as steps in process, or to select palette. Use JTabbedPanel if user should have control. | ||
crdMgr = | new CardLayout(); | Sets layout to CardLayout. |
crdMgr = | new CardLayout(h, v)); | Also can specify horizontal and vertical padding. |
p.add(cardPanel); | Adds next card to panel. | |
p.add(cardPanel, name); | Adds next card to panel. Use String name to select it later. | |
crdMgr.first(p); | Panel p displays the first card in the layout of p. | |
crdMgr.next(p); | Panel p displays the next card in the layout of p. | |
crdMgr.previous(p); | Panel p displays the previous card in the layout of p. | |
crdMgr.last(p); | Panel p displays the last card in the layout of p. | |
crdMgr.show(p, name); | Panel p displays card with String name name in panel p. | |
GridBagLayout - Panel divided into rows&cols of possibly unequal size. Overall best, but difficult. | ||
gbag = | new GridBagLayout(); | Creates GridBagLayout. |
Must add with GridBagConstraints object (gbc below). Can (carefully) reuse same gbc object. | ||
gbc = | new GridBagConstraints(); | Creates a new GridBagConsraints object. |
gbc.gridx = i; | Column, counting from 0. Always start at 0. Don't use default (RELATIVE). | |
gbc.gridy = i; | Column, counting from 0. Always start at 0. Don't use default (RELATIVE).. | |
gbc.gridwidth = i; | Number of columns wide (default 1). | |
gbc.gridheight = i; | Number of rows high (default 1). | |
gbc.weightx = d; | Relative horizontal space to allocate if container expands. Default 0.0. | |
gbc.weighty = d; | Relative vertical space to allocate if container expands. Default 0.0. | |
gbc.fill = fill; | How to expand comp if space larger than preferred size. fill can be
GridBagConstraints.NONE, GridBagConstraints.VERTICAL,
GridBagConstraints.HORIZONTAL, GridBagConstraints.BOTH . | |
gbc.anchor = anch; | If component doesn't fill the space, tells how it should be aligned. anch can be
one of these GridBagConstraints constants:
CENTER (default), NORTH, SOUTH, NORTHEAST, SOUTHWEST, EAST, WEST, SOUTHEAST, NORTHWEST | |
gbc.insets = ins; | Space around component. Eg, gbc.insets = new Insets(10,5,5,10); | |
gbc.ipadx = i; | Horizontal padding internal to component. Can be negative! | |
gbc.ipady = i; | Vertical padding internal to component. Can be negative! |
Copyleft 2005 Fred Swartz