package.html revision 2362
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync<HTML>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync<HEAD>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync<!--
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncCopyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncThis code is free software; you can redistribute it and/or modify it
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncunder the terms of the GNU General Public License version 2 only, as
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncpublished by the Free Software Foundation. Oracle designates this
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncparticular file as subject to the "Classpath" exception as provided
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncby Oracle in the LICENSE file that accompanied this code.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncThis code is distributed in the hope that it will be useful, but WITHOUT
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncFITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncversion 2 for more details (a copy is included in the LICENSE file that
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncaccompanied this code).
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncYou should have received a copy of the GNU General Public License version
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync2 along with this work; if not, write to the Free Software Foundation,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncInc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncPlease contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncCA 95054 USA or visit www.sun.com if you need additional information or
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynchave any questions.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync-->
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync <META NAME="Author" Content="Eric Armstrong">
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync <META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=iso-8859-1">
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync <TITLE>swing package</TITLE>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync</HEAD>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync<BODY bgcolor="white">
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync<P>Provides a set of &quot;lightweight&quot;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(all-Java language) components that,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncto the maximum degree possible, work the same on all platforms.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncFor a programmer's guide to using these components, see
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync<a href="http://java.sun.com/docs/books/tutorial/uiswing/index.html"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctarget="_top">Creating
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynca GUI with JFC/Swing</a>, a trail in <em>The Java Tutorial</em>.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncFor other resources, see
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync<a href="#related">Related Documentation</a>.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync<H2><a name="threading">Swing's Threading Policy</a></h2>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncIn general Swing is not thread safe. All Swing components and related
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncclasses, unless otherwise documented, must be accessed on the event
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncdispatching thread.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync<p>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncTypical Swing applications do processing in response to an event
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncgenerated from a user gesture. For example, clicking on a {@code
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncJButton} notifies all {@code ActionListeners} added to the {@code
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncJButton}. As all events generated from a user gesture are
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncdispatched on the event dispatching thread, most developers are not
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncimpacted by the restriction.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync<p>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncWhere the impact lies, however, is in constructing and showing a
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncSwing application. Calls to an application's {@code main} method,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncor methods in {@code Applet}, are not invoked on the event
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncdispatching thread. As such, care must be taken to transfer control
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncto the event dispatching thread when constructing and showing an
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncapplication or applet. The preferred way to transfer control and begin
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncworking with Swing is to use {@code invokeLater}. The {@code
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncinvokeLater} method schedules a {@code Runnable} to be processed on
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncthe event dispatching thread. The following two examples work equally
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncwell for transferring control and starting up a Swing application:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync<pre>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncpublic class MyApp implements Runnable {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync public void run() {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // Invoked on the event dispatching thread.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // Construct and show GUI.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync public static void main(String[] args) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SwingUtilities.invokeLater(new MyApp(args));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync</pre>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncOr:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync<pre>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncpublic class MyApp {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync MyApp(String[] args) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // Invoked on the event dispatching thread. Do any initialization
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // here.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync public void show() {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // Show the UI.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync public static void main(final String[] args) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // Schedule a job for the event-dispatching thread:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // creating and showing this application's GUI.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SwingUtilities.invokeLater(new Runnable() {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync public void run() {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync new MyApp(args).show();
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync });
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync</pre>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncThis restriction also applies to models attached to Swing components.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncFor example, if a {@code TableModel} is attached to a {@code
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncJTable}, the {@code TableModel} should only be modified on the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncevent dispatching thread. If you modify the model on a separate
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncthread you run the risk of exceptions and possible display
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynccorruption.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync<p>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncAs all events are delivered on the event dispatching thread, care must
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncbe taken in event processing. In particular, a long running task, such
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncas network io or computational intensive processing, executed on the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncevent dispatching thread blocks the event dispatching thread from
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncdispatching any other events. While the event dispatching thread is
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncblocked the application is completely unresponsive to user
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncinput. Refer to {@link javax.swing.SwingWorker} for the preferred way to do such
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncprocessing when working with Swing.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync<p>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncMore information on this topic can be found in the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync<a href="http://java.sun.com/docs/books/tutorial/uiswing/">Swing tutorial</a>,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncin particular the section on
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync<a href="http://java.sun.com/docs/books/tutorial/uiswing/misc/threads.html">How to Use Threads</a>.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync<H2>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync<a name="related">Related Documentation</a>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync</H2>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync<P>For overviews, tutorials, examples, guides, and other documentation, please see:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync<UL>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync <LI><A HREF="http://java.sun.com/products/jfc/tsc/"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync target="_top">The Swing Connection</A>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync <LI><A HREF="http://java.sun.com/docs/books/tutorial/"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync target="_top">The Java Tutorial</A>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync <LI><A HREF="http://developer.java.sun.com/developer/onlineTraining/"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync target="_top">Online Training</A> at the Java Developer Connection<font size=-2><sup>SM</sup></font>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync <LI><A HREF="http://java.sun.com/products/jfc/"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync target="_top">Java Foundation Classes (JFC)</A> home page
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync</UL>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync@serial exclude
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync</BODY>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync</HTML>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync