Spec-Zone .ru
спецификации, руководства, описания, API
 Платформа Java™
Стандарт Эд. 7

Пакет javax.swing

Обеспечивает ряд "легкого веса" (язык все-Java) компоненты что, до максимального возможного градуса, работа то же самое на всех платформах.

См.: Описание

Пакет javax.swing Описание

Обеспечивает ряд "легкого веса" (язык все-Java) компоненты что, до максимального возможного градуса, работа то же самое на всех платформах. Для руководства программиста по использованию этих компонентов см. Создание GUI с JFC/Swing, следом в Учебном руководстве по Java. Для других ресурсов см. Связанную Документацию.

Политика Поточной обработки Swing

В общем Swing не ориентировано на многопотоковое исполнение. Ко всем компонентам Swing и связанным классам, если иначе не задокументировано, нужно получить доступ на потоке диспетчеризации события.

Типичные приложения Swing делают обработку в ответ на событие, сгенерированное от пользовательского жеста. Например, щелчок a JButton уведомляет все ActionListeners добавленный к JButton. Поскольку все события, сгенерированные от пользовательского жеста, диспетчеризируются на потоке диспетчеризации события, на большинство разработчиков не воздействует ограничение.

То, где воздействие находится, однако, находится в построении и показе приложения Swing. Звонки в приложение main метод, или методы в Applet, не вызываются на поток диспетчеризации события. Также, забота должна быть проявлена, чтобы передать управление потоку диспетчеризации события, создавая и показывая приложение или апплет. Привилегированный способ передать управление и начать работать с Swing состоит в том, чтобы использовать invokeLater. invokeLater расписания a метода Runnable быть обработанным на потоке диспетчеризации события. Следующие два примера работают одинаково хорошо на то, что передали управление и запустили приложение Swing:

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));
    }
}
Или:
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();
            }
        });
    }
}
Это ограничение также применяется к моделям, присоединенным к компонентам Swing. Например, если a TableModel присоединен к a JTable, TableModel должен только быть изменен на потоке диспетчеризации события. Если Вы изменяете модель на отдельном потоке, Вы рискуете исключениями и возможным повреждением дисплея.

Поскольку все события поставляются на потоке диспетчеризации события, забота должна быть проявлена в обработке событий. В частности длинная выполняющаяся задача, такая как сеть io или вычислительная интенсивная обработка, выполняемая на событии, диспетчеризирующем поток, блокирует поток диспетчеризации события от диспетчеризации любых других событий. В то время как поток диспетчеризации события блокируется, приложение абсолютно безразлично к вводу данных пользователем. Обратитесь к SwingWorker для привилегированного способа сделать такую обработку, работая с Swing.

Больше информации об этой теме может быть найдено в учебном руководстве Swing, в особенности раздел по тому, Как Использовать Потоки.

Связанная Документация

Для кратких обзоров, учебных руководств, примеров, руководств, и другой документации, пожалуйста, см.:

 Платформа Java™
Стандарт Эд. 7

Представьте ошибку или функцию
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.