Components
and Containers
A Swing GUI consists of two
key items: components and containers. However, this distinction is
mostly conceptual because all containers are also components. The difference
between the two is found in their intended purpose: As the term is commonly
used, a component is an independent
visual control, such as a push button or slider. A container holds a group of
components. Thus, a container is a special type of component that is designed
to hold other components. Furthermore, in order for a component to be
displayed, it must be held within a container. Thus, all Swing GUIs will have
at least one container. Because containers are components, a container can also
hold other containers. This enables Swing to define what is called a containment hierarchy, at the top of
which must be a top-level container.
Let’s look a bit more closely
at components and containers.
Components
In general, Swing components
are derived from the JComponent
class. (The only exceptions to this are the four top-level containers,
described in the next section.) JComponent
provides the functionality that is common to all components. For example, JComponent supports the pluggable look
and feel. JComponent inherits the
AWT classes Container and Component.
Thus, a Swing component is
built on and compatible with an AWT component.
All of Swing’s components are
represented by classes defined within the package javax.swing. The following table shows the class names for Swing
components (including those used as
containers).
JApplet
JColorChooser
JDialog
JFrame
JLayeredPane
JMenuItem
JPopupMenu
JRootPane
JSlider
JTable
JTogglebutton
JViewport
JButton
JComboBox
JEditorPane
JInternalFrame
JList
JOptionPane
JProgressBar
JScrollBar
JSpinner
JTextArea
JToolBar
JWindow
JCheckBox
JComponent
JFileChooser
JLabel
JMenu
JPanel
JRadioButton
JScrollPane
JSplitPane
JTextField
JToolTip
JCheckBoxMenuItem
JDesktopPane
JFormattedTextField
JLayer
JMenuBar
JPasswordField
JRadioButtonMenuItem
JSeparator
JTabbedPane
JTextPane
JTree
Notice that all component
classes begin with the letter J. For
example, the class for a label is JLabel;
the class for a push button is JButton;
and the class for a scroll bar is JScrollBar.
Containers
Swing defines two types of
containers. The first are top-level containers: JFrame, JApplet, JWindow, and JDialog. These containers do not inherit JComponent. They do, however,
inherit the AWT classes Component
and Container. Unlike Swing’s other
components, which are lightweight, the top-level containers are heavyweight.
This makes the top-level containers a special case in the Swing component
library.
As the name implies, a
top-level container must be at the top of a containment hierarchy. A top-level
container is not contained within any other container. Furthermore, every
containment hierarchy must begin with a top-level container. The one most
commonly used for applications is JFrame.
The one used for applets is JApplet.
The second type of containers
supported by Swing are lightweight containers. Lightweight containers do inherit JComponent. An example of a lightweight container is JPanel, which is a general-purpose
container. Lightweight containers are often used to organize and manage groups
of related components because a lightweight container can be contained within
another container. Thus, you can use lightweight containers such as JPanel to create subgroups of related
controls that are contained within an outer container.
The
Top-Level Container Panes
Each top-level container
defines a set of panes. At the top of
the hierarchy is an instance of JRootPane.
JRootPane is a lightweight container
whose purpose is to manage the other panes. It also helps manage the optional
menu bar. The panes that comprise the root pane are called the glass pane, the content pane, and the layered
pane.
The glass pane is the top-level
pane. It sits above and completely covers all other panes. By default, it is a
transparent instance of JPanel. The
glass pane enables you to manage mouse events that affect the entire container
(rather than an individual control) or to paint over any other component, for
example. In most cases, you won’t need to use the glass pane directly, but it
is there if you need it.
The layered pane is an
instance of JLayeredPane. The
layered pane allows components to be given a depth value. This value determines
which component overlays another. (Thus, the layered pane lets you specify a
Z-order for a component, although this is not something that you will usually
need to do.) The layered pane holds the content pane and the (optional) menu
bar.
Although the glass pane and
the layered panes are integral to the operation of a top-level container and
serve important purposes, much of what they provide occurs behind the scene.
The pane with which your application will interact the most is the content
pane, because this is the pane to which you will add visual components. In
other words, when you add a component, such as a button, to a top-level
container, you will add it to the content pane. By default, the content pane is
an opaque instance of JPanel.
Related Topics
Privacy Policy, Terms and Conditions, DMCA Policy and Compliant
Copyright © 2018-2023 BrainKart.com; All Rights Reserved. Developed by Therithal info, Chennai.