CardLayout
The CardLayout layout manager allows you to add multiple
components to a container, and each component is added and displayed in the
same location. However, only one of the components is made visible at any
given time, and you can specify which one that should be by calling the
first(), last(), next(), and
previous() methods defined in CardLayout. Those
methods refer to the components added to the container, and display the
component that was added in the order corresponding to the method name. For
example, first() causes the component added first to appear,
last() causes the most recently added one to appear, while
next() and previous() allow you to iterate
through the components in either a forward or backward direction. In
addition, the show() method allows you to specify that a
particular component should be displayed, regardless of the order in which
it was added to the container relative to the other components.
The CardLayout class is arguably the least useful of the
layout managers included with Java. Prior to the introduction of Swing,
CardLayout was envisioned as a way to create a tabbed user
interface, but the JTabbedPane provides a much better
mechanism for doing so. However, CardLayout may still be
useful in some cases, such as when constructing a Windows-style "wizard"
interface that displays a series of panels one at a time.
Constructing a CardLayout
You can specify horizontal and vertical gap values when you create a new
instance of CardLayout and these gaps will be placed around
the edges of the component displayed in the container. Specifically, the
horizontal gap appears on the left and right sides of the component, and
the vertical gap is used at the top and bottom of the component to separate
it from the edge of the container.
Constraints
When adding components to a container that uses a CardLayout,
you should assign a unique name represented by a String value
to each component (in other words, no two of the components in the
container should be assigned the same name). This allows you to select
which component in the container to display by passing that component's
name to the show() method. For example, the following code
segment creates a frame that uses a CardLayout for its content
pane. Three panels (or "tabs") are added to the content pane, each with a
different background color and each assigned a unique name. Once the frame
is constructed, the displayTab() method is called, passing it
the name of the second (green) tab. That method calls
CardLayout's show() method, which causes the
specified component to be made visible. After this, the next()
method is used to cycle through the tabs one at a time:
import java.awt.*;
import javax.swing.*;
public class CardTest extends JFrame {
protected CardLayout layout;
public static void main(String[] args) {
CardTest ct = new CardTest();
ct.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ct.displayTab("Green Tab");
ct.setSize(400, 300);
ct.setVisible(true);
while (true) {
try {
Thread.sleep(3000);
} catch (Exception e) {}
;
ct.cycle();
}
}
public CardTest() {
JPanel tab;
Container pane = getContentPane();
layout = new CardLayout();
pane.setLayout(layout);
tab = new JPanel();
tab.setBackground(Color.red);
pane.add(tab, "Red Tab");
tab = new JPanel();
tab.setBackground(Color.green);
pane.add(tab, "Green Tab");
tab = new JPanel();
tab.setBackground(Color.blue);
pane.add(tab, "Blue Tab");
}
public void cycle() {
layout.next(this.getContentPane());
}
public void displayTab(String name) {
layout.show(this.getContentPane(), name);
}
}
New on the Java Boutique:
New Review:
Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling
API boasts simplicity, ease-of-integration, a well-rounded feature
set, and it's free!
New Applet:
Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA
sequences into three useful formats.
Elsewhere on internet.com:
WebDeveloper Java
Lots of Java information on webdeveloper.com
WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.
ScriptSearch Java
Hundreds of free Java code files to download.
jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.
|