|
FlowLayout, which places components
in a simple left-to-right order.BorderLayoutGridLayout
which places components in rows and columns after resizing all of them to the
same size.GridBagLayout
which places components in rows and columns without requiring them to be
the same size.CardLayout,
which places components on top of each other like a deck of cards and
flips through the components.
Before adding components, you must first define the layout via the
command setLayout(layout manager) or use the
default layout manager. For a Panel
(including an Applet), the default layout is
FlowLayout; for a Window this is
BorderLayout.
Examples will illustrate the first four layout managers.
This is the default layout manager for any panel. It places components from left to right with automatic wrapping. For example, the following Java code
import java.applet.Applet;
import java.awt.*;
public class FlowTest extends Applet {
private Button ok, cancel, help;
public void init() {
// define FlowLayout manager
setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));
// define buttons
ok = new Button("OK");
cancel = new Button("Cancel");
help = new Button("Help");
// add buttons
add(ok);
add(cancel);
add(help);
}
}
will arrange three buttons horizontally (if the applet window size is large
enough), centered, and with gaps of 10 pixels between components (in both
directions). See the applet below.
The BorderLayout provides five zones arranged by the
geographical names North, South, East,
West, and Center. An example:
It is produced by the following Java code
import java.applet.Applet;
import java.awt.*;
public class BorderTest extends Applet {
private Button left, right, top, bottom, center;
public void init() {
// define BorderLayout manager
setLayout(new BorderLayout(5,5));
// define buttons
left = new Button("Left");
right = new Button("Right");
top = new Button("Top");
bottom = new Button("Bottom");
center = new Button("Center");
// add buttons
add("North", top);
add("South", bottom);
add("East", right);
add("West", left);
add("Center", center);
}
public Insets insets() {
// use margins of 40 pixels
return new Insets(40,40,40,40);
}
}
There is a gap of 5 pixels between each button. Without this specification
in the BorderLayout method, there will be no gap between
components.
Talking about gaps between components in a container: you can also create margins in a container or component. Use the method
Insets(int top, int left, int bottom,
int right)
A GridLayout divides a container into a specified number of
rows and columns and arranges the components in those rows and columns,
left-to-right and top-to-bottom. For an example, we refer to the earlier example in which we described
the Checkbox component. The
same example of GridLayout is part of the next one, viz.
GridBagLayout.
In the GridBagLayout a container is again divided into a
specified number of rows and columns, but now components may occupy
more than one cell of the grid (their "display areas").
Heights of rows and widths of columns are not necessarily the same in a
GridBagLayout. All this gives you more control on
the size and position of components, on filling of unused space, on internal
and external padding, and so on.
GridBagLayout is rather complicated to use.
We shall only give one example to
serve as a prototype, but it does no harm if you skip it.