Provides a set of "lightweight" (all-Java language) components that, to the maximum degree possible, work the same on all platforms. For a programmer's guide to using these components, see Creating a GUI with JFC/Swing, a trail in The Java Tutorial. For other resources, see Related Documentation.
Typical Swing applications do processing in response to an event
generated from a user gesture. For example, clicking on a JButton
notifies all ActionListeners
added to the JButton
. As all events generated from a user gesture are
dispatched on the event dispatching thread, most developers are not
impacted by the restriction.
Where the impact lies, however, is in constructing and showing a
Swing application. Calls to an application's main
method,
or methods in Applet
, are not invoked on the event
dispatching thread. As such, care must be taken to transfer control
to the event dispatching thread when constructing and showing an
application or applet. The preferred way to transfer control and begin
working with Swing is to use invokeLater
. The invokeLater
method schedules a Runnable
to be processed on
the event dispatching thread. The following two examples work equally
well for transferring control and starting up a Swing application:
public class MyApp implements Runnable { public void run() { // Invoked on the event dispatching thread. // Construct and show GUI. } public static void main(String[] args) { SwingUtilities.invokeLater(new MyApp(args)); } }Or:
public class MyApp { MyApp(String[] args) { // Invoked on the event dispatching thread. Do any initialization // here. } public void show() { // Show the UI. } public static void main(final String[] args) { // Schedule a job for the event-dispatching thread: // creating and showing this application's GUI. SwingUtilities.invokeLater(new Runnable() { public void run() { new MyApp(args).show(); } }); } }This restriction also applies to models attached to Swing components. For example, if a
TableModel
is attached to a JTable
, the TableModel
should only be modified on the
event dispatching thread. If you modify the model on a separate
thread you run the risk of exceptions and possible display
corruption.
As all events are delivered on the event dispatching thread, care must
be taken in event processing. In particular, a long running task, such
as network io or computational intensive processing, executed on the
event dispatching thread blocks the event dispatching thread from
dispatching any other events. While the event dispatching thread is
blocked the application is completely unresponsive to user
input. Refer to SwingWorker
for the preferred way to do such
processing when working with Swing.
More information on this topic can be found in the Swing tutorial, in particular the section on How to Use Threads.
For overviews, tutorials, examples, guides, and other documentation, please see:
Action | The Action interface provides a useful extension to the
ActionListener
interface in cases where the same functionality may be accessed by
several controls. |
BoundedRangeModel | Defines the data model used by components like Slider s
and ProgressBar s. |
ButtonModel | State model for buttons. |
CellEditor | This interface defines the methods any general editor should be able to implement. |
ComboBoxEditor | The editor component used for JComboBox components. |
ComboBoxModel | A data model for a combo box. |
DesktopManager | DesktopManager objects are owned by a JDesktopPane object. |
Icon | A small fixed size picture, typically used to decorate components. |
JComboBox.KeySelectionManager | The interface that defines a KeySelectionManager . |
ListCellRenderer | Identifies components that can be used as "rubber stamps" to paint the cells in a JList. |
ListModel | This interface defines the methods components like JList use to get the value of each cell in a list and the length of the list. |
ListSelectionModel | This interface represents the current state of the selection for any of the components that display a list of values with stable indices. |
MenuElement | Any component that can be placed into a menu should implement this interface. |
MutableComboBoxModel | A mutable version of ComboBoxModel . |
Renderer | Defines the requirements for an object responsible for "rendering" (displaying) a value. |
RootPaneContainer | This interface is implemented by components that have a single JRootPane child: JDialog, JFrame, JWindow, JApplet, JInternalFrame. |
Scrollable | An interface that provides information to a scrolling container like JScrollPane. |
ScrollPaneConstants | Constants used with the JScrollPane component. |
SingleSelectionModel | A model that supports at most one indexed selection. |
SpinnerModel | A model for a potentially unbounded sequence of object values. |
SwingConstants | A collection of constants generally used for positioning and orienting components on the screen. |
UIDefaults.ActiveValue | This class enables one to store an entry in the defaults
table that's constructed each time it's looked up with one of
the getXXX(key) methods. |
UIDefaults.LazyValue | This class enables one to store an entry in the defaults
table that isn't constructed until the first time it's
looked up with one of the getXXX(key) methods. |
WindowConstants | Constants used to control the window-closing operation. |
AbstractAction | This class provides default implementations for the JFC Action
interface. |
AbstractButton | Defines common behaviors for buttons and menu items. |
AbstractButton.AccessibleAbstractButton | This class implements accessibility support for the
AbstractButton class. |
AbstractButton.ButtonChangeListener | Extends ChangeListener to be serializable. |
AbstractCellEditor | A base class for CellEditors , providing default
implementations for the methods in the CellEditor
interface except getCellEditorValue() . |
AbstractListModel | The abstract definition for the data model that provides
a List with its contents. |
AbstractSpinnerModel | This class provides the ChangeListener part of the SpinnerModel interface that should be suitable for most concrete SpinnerModel implementations. |
ActionMap | ActionMap provides mappings from
Object s
(called keys or Action names)
to Action s. |
BorderFactory | Factory class for vending standard Border objects. |
Box | A lightweight container that uses a BoxLayout object as its layout manager. |
Box.AccessibleBox | This class implements accessibility support for the
Box class. |
Box.Filler | An implementation of a lightweight component that participates in layout but has no view. |
Box.Filler.AccessibleBoxFiller | This class implements accessibility support for the
Box.Filler class. |
BoxLayout | A layout manager that allows multiple components to be laid out either vertically or horizontally. |
ButtonGroup | This class is used to create a multiple-exclusion scope for a set of buttons. |
CellRendererPane | This class is inserted in between cell renderers and the components that use them. |
CellRendererPane.AccessibleCellRendererPane | This class implements accessibility support for the
CellRendererPane class. |
ComponentInputMap | A ComponentInputMap is an InputMap
associated with a particular JComponent . |
DebugGraphics | Graphics subclass supporting graphics debugging. |
DefaultBoundedRangeModel | A generic implementation of BoundedRangeModel. |
DefaultButtonModel | The default implementation of a Button component's data model. |
DefaultCellEditor | The default editor for table and tree cells. |
DefaultCellEditor.EditorDelegate | The protected EditorDelegate class. |
DefaultComboBoxModel | The default model for combo boxes. |
DefaultDesktopManager | This is an implementation of the DesktopManager . |
DefaultFocusManager | This class has been obsoleted by the 1.4 focus APIs. |
DefaultListCellRenderer | Renders an item in a list. |
DefaultListCellRenderer.UIResource | A subclass of DefaultListCellRenderer that implements UIResource. |
DefaultListModel | This class loosely implements the java.util.Vector
API, in that it implements the 1.1.x version of
java.util.Vector , has no collection class support,
and notifies the ListDataListener s when changes occur. |
DefaultListSelectionModel | Default data model for list selections. |
DefaultRowSorter<M, I> | An implementation of RowSorter that provides sorting and
filtering around a grid-based data model. |
DefaultRowSorter.ModelWrapper<M, I> | DefaultRowSorter.ModelWrapper is responsible for providing
the data that gets sorted by DefaultRowSorter . |
DefaultSingleSelectionModel | A generic implementation of SingleSelectionModel. |
FocusManager | This class has been obsoleted by the 1.4 focus APIs. |
GrayFilter | An image filter that "disables" an image by turning it into a grayscale image, and brightening the pixels in the image. |
GroupLayout | GroupLayout is a LayoutManager that hierarchically
groups components in order to position them in a Container . |
GroupLayout.Group | Group provides the basis for the two types of
operations supported by GroupLayout : laying out
components one after another (SequentialGroup )
or aligned (ParallelGroup ). |
GroupLayout.ParallelGroup | A Group that aligns and sizes it's children. |
GroupLayout.SequentialGroup | A Group that positions and sizes its elements
sequentially, one after another. |
ImageIcon | An implementation of the Icon interface that paints Icons from Images. |
ImageIcon.AccessibleImageIcon | This class implements accessibility support for the
ImageIcon class. |
InputMap | InputMap provides a binding between an input event
(currently only KeyStroke s are used)
and an Object . |
InputVerifier | The purpose of this class is to help clients support smooth focus navigation through GUIs with text fields. |
InternalFrameFocusTraversalPolicy | A FocusTraversalPolicy which can optionally provide an algorithm for determining a JInternalFrame's initial Component. |
JApplet | An extended version of java.applet.Applet that adds support for
the JFC/Swing component architecture. |
JApplet.AccessibleJApplet | This class implements accessibility support for the
JApplet class. |
JButton | An implementation of a "push" button. |
JButton.AccessibleJButton | This class implements accessibility support for the
JButton class. |
JCheckBox | An implementation of a check box -- an item that can be selected or deselected, and which displays its state to the user. |
JCheckBox.AccessibleJCheckBox | This class implements accessibility support for the
JCheckBox class. |
JCheckBoxMenuItem | A menu item that can be selected or deselected. |
JCheckBoxMenuItem.AccessibleJCheckBoxMenuItem | This class implements accessibility support for the
JCheckBoxMenuItem class. |
JColorChooser | JColorChooser provides a pane of controls designed to allow
a user to manipulate and select a color. |
JColorChooser.AccessibleJColorChooser | This class implements accessibility support for the
JColorChooser class. |
JComboBox | A component that combines a button or editable field and a drop-down list. |
JComboBox.AccessibleJComboBox | This class implements accessibility support for the
JComboBox class. |
JComponent | The base class for all Swing components except top-level containers. |
JComponent.AccessibleJComponent | Inner class of JComponent used to provide default support for accessibility. |
JComponent.AccessibleJComponent.AccessibleContainerHandler | Fire PropertyChange listener, if one is registered, when children added/removed. |
JComponent.AccessibleJComponent.AccessibleFocusHandler | Fire PropertyChange listener, if one is registered, when focus events happen |
JDesktopPane | A container used to create a multiple-document interface or a virtual desktop. |
JDesktopPane.AccessibleJDesktopPane | This class implements accessibility support for the
JDesktopPane class. |
JDialog | The main class for creating a dialog window. |
JDialog.AccessibleJDialog | This class implements accessibility support for the
JDialog class. |
JEditorPane | A text component to edit various kinds of content. |
JEditorPane.AccessibleJEditorPane | This class implements accessibility support for the
JEditorPane class. |
JEditorPane.AccessibleJEditorPaneHTML | This class provides support for AccessibleHypertext ,
and is used in instances where the EditorKit
installed in this JEditorPane is an instance of
HTMLEditorKit . |
JEditorPane.JEditorPaneAccessibleHypertextSupport | What's returned by
AccessibleJEditorPaneHTML.getAccessibleText . |
JEditorPane.JEditorPaneAccessibleHypertextSupport.HTMLLink | |
JFileChooser | JFileChooser provides a simple mechanism for the user to
choose a file. |
JFileChooser.AccessibleJFileChooser | This class implements accessibility support for the
JFileChooser class. |
JFormattedTextField | JFormattedTextField extends JTextField adding
support for formatting arbitrary values, as well as retrieving a particular
object once the user has edited the text. |
JFormattedTextField.AbstractFormatter | Instances of AbstractFormatter are used by
JFormattedTextField to handle the conversion both
from an Object to a String, and back from a String to an Object. |
JFormattedTextField.AbstractFormatterFactory | Instances of AbstractFormatterFactory are used by
JFormattedTextField to obtain instances of
AbstractFormatter which in turn are used to format values. |
JFrame | An extended version of java.awt.Frame that adds support for
the JFC/Swing component architecture. |
JFrame.AccessibleJFrame | This class implements accessibility support for the
JFrame class. |
JInternalFrame | A lightweight object that provides many of the features of a native frame, including dragging, closing, becoming an icon, resizing, title display, and support for a menu bar. |
JInternalFrame.AccessibleJInternalFrame | This class implements accessibility support for the
JInternalFrame class. |
JInternalFrame.JDesktopIcon | This component represents an iconified version of a
JInternalFrame . |
JInternalFrame.JDesktopIcon.AccessibleJDesktopIcon | This class implements accessibility support for the
JInternalFrame.JDesktopIcon class. |
JLabel | A display area for a short text string or an image, or both. |
JLabel.AccessibleJLabel | The class used to obtain the accessible role for this object. |
JLayeredPane | JLayeredPane adds depth to a JFC/Swing container,
allowing components to overlap each other when needed. |
JLayeredPane.AccessibleJLayeredPane | This class implements accessibility support for the
JLayeredPane class. |
JList | A component that displays a list of objects and allows the user to select one or more items. |
JList.AccessibleJList | This class implements accessibility support for the
JList class. |
JList.AccessibleJList.AccessibleJListChild | This class implements accessibility support appropriate for list children. |
JList.DropLocation | A subclass of TransferHandler.DropLocation representing
a drop location for a JList . |
JMenu | An implementation of a menu -- a popup window containing
JMenuItem s that
is displayed when the user selects an item on the JMenuBar . |
JMenu.AccessibleJMenu | This class implements accessibility support for the
JMenu class. |
JMenu.WinListener | A listener class that watches for a popup window closing. |
JMenuBar | An implementation of a menu bar. |
JMenuBar.AccessibleJMenuBar | This class implements accessibility support for the
JMenuBar class. |
JMenuItem | An implementation of an item in a menu. |
JMenuItem.AccessibleJMenuItem | This class implements accessibility support for the
JMenuItem class. |
JOptionPane | JOptionPane makes it easy to pop up a standard dialog box that
prompts users for a value or informs them of something. |
JOptionPane.AccessibleJOptionPane | This class implements accessibility support for the
JOptionPane class. |
JPanel | JPanel is a generic lightweight container. |
JPanel.AccessibleJPanel | This class implements accessibility support for the
JPanel class. |
JPasswordField | JPasswordField is a lightweight component that allows
the editing of a single line of text where the view indicates
something was typed, but does not show the original characters. |
JPasswordField.AccessibleJPasswordField | This class implements accessibility support for the
JPasswordField class. |
JPopupMenu | An implementation of a popup menu -- a small window that pops up and displays a series of choices. |
JPopupMenu.AccessibleJPopupMenu | This class implements accessibility support for the
JPopupMenu class. |
JPopupMenu.Separator | A popup menu-specific separator. |
JProgressBar | A component that visually displays the progress of some task. |
JProgressBar.AccessibleJProgressBar | This class implements accessibility support for the
JProgressBar class. |
JRadioButton | An implementation of a radio button -- an item that can be selected or deselected, and which displays its state to the user. |
JRadioButton.AccessibleJRadioButton | This class implements accessibility support for the
JRadioButton class. |
JRadioButtonMenuItem | An implementation of a radio button menu item. |
JRadioButtonMenuItem.AccessibleJRadioButtonMenuItem | This class implements accessibility support for the
JRadioButtonMenuItem class. |
JRootPane | A lightweight container used behind the scenes by
JFrame , JDialog , JWindow ,
JApplet , and JInternalFrame . |
JRootPane.AccessibleJRootPane | This class implements accessibility support for the
JRootPane class. |
JRootPane.RootLayout | A custom layout manager that is responsible for the layout of layeredPane, glassPane, and menuBar. |
JScrollBar | An implementation of a scrollbar. |
JScrollBar.AccessibleJScrollBar | This class implements accessibility support for the
JScrollBar class. |
JScrollPane | Provides a scrollable view of a lightweight component. |
JScrollPane.AccessibleJScrollPane | This class implements accessibility support for the
JScrollPane class. |
JScrollPane.ScrollBar | By default JScrollPane creates scrollbars
that are instances
of this class. |
JSeparator | JSeparator provides a general purpose component for
implementing divider lines - most commonly used as a divider
between menu items that breaks them up into logical groupings. |
JSeparator.AccessibleJSeparator | This class implements accessibility support for the
JSeparator class. |
JSlider | A component that lets the user graphically select a value by sliding a knob within a bounded interval. |
JSlider.AccessibleJSlider | This class implements accessibility support for the
JSlider class. |
JSpinner | A single line input field that lets the user select a number or an object value from an ordered sequence. |
JSpinner.AccessibleJSpinner | AccessibleJSpinner implements accessibility
support for the JSpinner class. |
JSpinner.DateEditor | An editor for a JSpinner whose model is a
SpinnerDateModel . |
JSpinner.DefaultEditor | A simple base class for more specialized editors
that displays a read-only view of the model's current
value with a JFormattedTextField . |
JSpinner.ListEditor | An editor for a JSpinner whose model is a
SpinnerListModel . |
JSpinner.NumberEditor | An editor for a JSpinner whose model is a
SpinnerNumberModel . |
JSplitPane | JSplitPane is used to divide two (and only two)
Component s. |
JSplitPane.AccessibleJSplitPane | This class implements accessibility support for the
JSplitPane class. |
JTabbedPane | A component that lets the user switch between a group of components by clicking on a tab with a given title and/or icon. |
JTabbedPane.AccessibleJTabbedPane | This class implements accessibility support for the
JTabbedPane class. |
JTabbedPane.ModelListener | We pass ModelChanged events along to the listeners with
the tabbedpane (instead of the model itself) as the event source. |
JTable | The JTable is used to display and edit regular two-dimensional tables
of cells. |
JTable.AccessibleJTable | This class implements accessibility support for the
JTable class. |
JTable.AccessibleJTable.AccessibleJTableCell | The class provides an implementation of the Java Accessibility API appropriate to table cells. |
JTable.AccessibleJTable.AccessibleJTableModelChange | |
JTable.DropLocation | A subclass of TransferHandler.DropLocation representing
a drop location for a JTable . |
JTextArea | A JTextArea is a multi-line area that displays plain text. |
JTextArea.AccessibleJTextArea | This class implements accessibility support for the
JTextArea class. |
JTextField | JTextField is a lightweight component that allows the editing
of a single line of text. |
JTextField.AccessibleJTextField | This class implements accessibility support for the
JTextField class. |
JTextPane | A text component that can be marked up with attributes that are represented graphically. |
JToggleButton | An implementation of a two-state button. |
JToggleButton.AccessibleJToggleButton | This class implements accessibility support for the
JToggleButton class. |
JToggleButton.ToggleButtonModel | The ToggleButton model
Warning: Serialized objects of this class will not be compatible with future Swing releases. |
JToolBar | JToolBar provides a component that is useful for
displaying commonly used Action s or controls. |
JToolBar.AccessibleJToolBar | This class implements accessibility support for the
JToolBar class. |
JToolBar.Separator | A toolbar-specific separator. |
JToolTip | Used to display a "Tip" for a Component. |
JToolTip.AccessibleJToolTip | This class implements accessibility support for the
JToolTip class. |
JTree | A control that displays a set of hierarchical data as an outline. |
JTree.AccessibleJTree | This class implements accessibility support for the
JTree class. |
JTree.AccessibleJTree.AccessibleJTreeNode | This class implements accessibility support for the
JTree child. |
JTree.DropLocation | A subclass of TransferHandler.DropLocation representing
a drop location for a JTree . |
JTree.DynamicUtilTreeNode | DynamicUtilTreeNode can wrap
vectors/hashtables/arrays/strings and
create the appropriate children tree nodes as necessary. |
JTree.EmptySelectionModel | EmptySelectionModel is a TreeSelectionModel
that does not allow anything to be selected. |
JTree.TreeModelHandler | Listens to the model and updates the expandedState
accordingly when nodes are removed, or changed. |
JTree.TreeSelectionRedirector | Handles creating a new TreeSelectionEvent with the
JTree as the
source and passing it off to all the listeners. |
JViewport | The "viewport" or "porthole" through which you see the underlying information. |
JViewport.AccessibleJViewport | This class implements accessibility support for the
JViewport class. |
JViewport.ViewListener | A listener for the view. |
JWindow | A JWindow is a container that can be displayed anywhere on the
user's desktop. |
JWindow.AccessibleJWindow | This class implements accessibility support for the
JWindow class. |
KeyStroke | A KeyStroke represents a key action on the keyboard, or equivalent input device. |
LayoutFocusTraversalPolicy | A SortingFocusTraversalPolicy which sorts Components based on their size, position, and orientation. |
LayoutStyle | LayoutStyle provides information about how to position
components. |
LookAndFeel | LookAndFeel , as the name implies, encapsulates a look and
feel. |
MenuSelectionManager | A MenuSelectionManager owns the selection in menu hierarchy. |
OverlayLayout | A layout manager to arrange components over the top of each other. |
Popup | Popups are used to display a Component to the user, typically
on top of all the other Component s in a particular containment
hierarchy. |
PopupFactory | PopupFactory , as the name implies, is used to obtain
instances of Popup s. |
ProgressMonitor | A class to monitor the progress of some operation. |
ProgressMonitor.AccessibleProgressMonitor | AccessibleProgressMonitor implements accessibility
support for the ProgressMonitor class. |
ProgressMonitorInputStream | Monitors the progress of reading from some InputStream. |
RepaintManager | This class manages repaint requests, allowing the number of repaints to be minimized, for example by collapsing multiple requests into a single repaint for members of a component tree. |
RowFilter<M, I> | RowFilter is used to filter out entries from the
model so that they are not shown in the view. |
RowFilter.Entry<M, I> | An Entry object is passed to instances of
RowFilter , allowing the filter to get the value of the
entry's data, and thus to determine whether the entry should be shown. |
RowSorter<M> | RowSorter provides the basis for sorting and filtering. |
RowSorter.SortKey | SortKey describes the sort order for a particular column. |
ScrollPaneLayout | The layout manager used by JScrollPane . |
ScrollPaneLayout.UIResource | The UI resource version of ScrollPaneLayout . |
SizeRequirements | For the convenience of layout managers, calculates information about the size and position of components. |
SizeSequence | A SizeSequence object
efficiently maintains an ordered list
of sizes and corresponding positions. |
SortingFocusTraversalPolicy | A FocusTraversalPolicy that determines traversal order by sorting the Components of a focus traversal cycle based on a given Comparator. |
SpinnerDateModel | A SpinnerModel for sequences of Date s. |
SpinnerListModel | A simple implementation of SpinnerModel whose
values are defined by an array or a List . |
SpinnerNumberModel | A SpinnerModel for sequences of numbers. |
Spring | An instance of the Spring class holds three properties that
characterize its behavior: the minimum, preferred, and
maximum values. |
SpringLayout | A SpringLayout lays out the children of its associated container
according to a set of constraints. |
SpringLayout.Constraints | A Constraints object holds the
constraints that govern the way a component's size and position
change in a container controlled by a SpringLayout . |
SwingUtilities | A collection of utility methods for Swing. |
SwingWorker<T, V> | An abstract class to perform lengthy GUI-interacting tasks in a dedicated thread. |
Timer | Fires one or more ActionEvent s at specified
intervals. |
ToolTipManager | Manages all the ToolTips in the system. |
ToolTipManager.insideTimerAction | |
ToolTipManager.outsideTimerAction | |
ToolTipManager.stillInsideTimerAction | |
TransferHandler | This class is used to handle the transfer of a Transferable
to and from Swing components. |
TransferHandler.DropLocation | Represents a location where dropped data should be inserted. |
TransferHandler.TransferSupport | This class encapsulates all relevant details of a clipboard or drag and drop transfer, and also allows for customizing aspects of the drag and drop experience. |
UIDefaults | A table of defaults for Swing components. |
UIDefaults.LazyInputMap | LazyInputMap will create a InputMap
in its createValue
method. |
UIDefaults.ProxyLazyValue | This class provides an implementation of LazyValue
which can be
used to delay loading of the Class for the instance to be created. |
UIManager | UIManager manages the current look and feel, the set of
available look and feels, PropertyChangeListeners that
are notified when the look and feel changes, look and feel defaults, and
convenience methods for obtaining various default values. |
UIManager.LookAndFeelInfo | Provides a little information about an installed
LookAndFeel for the sake of configuring a menu or
for initial application set up. |
ViewportLayout | The default layout manager for JViewport . |
DropMode | Drop modes, used to determine the method by which a component tracks and indicates a drop location during drag and drop. |
GroupLayout.Alignment | Enumeration of the possible ways ParallelGroup can align
its children. |
JTable.PrintMode | Printing modes, used in printing JTable s. |
LayoutStyle.ComponentPlacement | ComponentPlacement is an enumeration of the
possible ways two components can be placed relative to each
other. |
RowFilter.ComparisonType | Enumeration of the possible comparison values supported by
some of the default RowFilter s. |
SortOrder | SortOrder is an enumeration of the possible sort orderings. |
SwingWorker.StateValue | Values for the state bound property. |
UnsupportedLookAndFeelException | An exception that indicates the requested look & feel management classes are not present on the user's system. |