--- old/src/java.desktop/share/classes/javax/swing/package.html 2017-02-20 11:48:58.000000000 +0300 +++ /dev/null 2017-02-20 11:48:58.000000000 +0300 @@ -1,151 +0,0 @@ - - - -
- - - - -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 {@code -JButton} notifies all {@code ActionListeners} added to the {@code -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 {@code main} method, -or methods in {@code 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 {@code invokeLater}. The {@code -invokeLater} method schedules a {@code 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: -
-import javax.swing.SwingUtilities; - -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()); - } -} --Or: -
-import javax.swing.SwingUtilities; - -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 {@code TableModel} is attached to a {@code -JTable}, the {@code 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 {@link javax.swing.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 -Concurrency in Swing. - - -
For overviews, tutorials, examples, guides, and other documentation, please see: - -