Пакет javax.swing

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

Политика потоков Swing

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

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

Однако, влияние наблюдается при создании и отображении приложения Swing. Вызовы метода приложения main или методов в Applet не вызываются в потоке обработки событий. Поэтому необходимо позаботиться о передаче управления в поток обработки событий при создании и отображении приложения или апплета. Предпочтительный способ передачи управления и начала работы с Swing – использование invokeLater. Метод invokeLater планирует Runnable для обработки в потоке обработки событий. Следующие два примера одинаково хорошо подходят для передачи управления и запуска приложения Swing:

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

Хотя обычно безопасно выполнять обновления интерфейса пользователя сразу же при выполнении в потоке обработки событий, есть исключение: если слушатель модели пытается дополнительно изменить интерфейс пользователя до того, как интерфейс пользователя был обновлён для отражения ожидаемого изменения, то интерфейс пользователя может быть отображён неправильно. Это может произойти, если установленный слушателем приложения требует обновления интерфейса пользователя в ответ на событие, которое вызовет изменение структуры модели. Важно сначала разрешить установленным слушателям компонента обработать это изменение, так как нет гарантии порядка вызовов слушателей. Решением является для слушателя приложения выполнить изменение с помощью SwingUtilities.invokeLater, чтобы любые изменения в отображении интерфейса пользователя были выполнены после обработки всех слушателей модели, установленных компонентом.

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

Дополнительную информацию по этой теме можно найти в учебнике по Swing, в частности, в разделе Асинхронность в Swing.

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

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

Интерфейс Action предоставляет полезное расширение интерфейса ActionListener в тех случаях, когда к одной и той же функциональности может получить доступ несколько элементов управления.

BoundedRangeModel

Определяет модель данных, используемую компонентами, такими как Slider и ProgressBar.

ButtonModel

Модель состояния для кнопок.

CellEditor

Этот интерфейс определяет методы, которые должен реализовать любой общий редактор.

ComboBoxEditor

Компонент-редактор, используемый для компонентов JComboBox.

ComboBoxModel<E>

Модель данных для раскрывающегося списка.

DesktopManager

Объекты DesktopManager принадлежат объекту JDesktopPane.

Icon

Небольшой рисунок фиксированного размера, обычно используемый для украшения компонентов.

JComboBox.KeySelectionManager

Интерфейс, определяющий KeySelectionManager.

ListCellRenderer<E>

Определяет компоненты, которые могут использоваться в качестве «штампов» для рисования ячеек в JList.

ListModel<E>

Этот интерфейс определяет методы, которые компоненты, такие как JList, используют для получения значения каждой ячейки в списке и длины списка.

ListSelectionModel

Этот интерфейс представляет текущее состояние выбора для любого из компонентов, отображающих список значений со стабильными индексами.

MenuElement

Любой компонент, который можно разместить в меню, должен реализовывать этот интерфейс.

MutableComboBoxModel<E>

Изменяемая версия ComboBoxModel.

Painter<T>

Делегат рисования.

Renderer

Определяет требования к объекту, отвечающему за «рендеринг» (отображение) значения.

RootPaneContainer

Этот интерфейс реализуется компонентами, у которых единственный дочерний элемент JRootPane: JDialog, JFrame, JWindow, JApplet, JInternalFrame.

Scrollable

Интерфейс, предоставляющий информацию контейнеру прокрутки, например, JScrollPane.

ScrollPaneConstants

Константы, используемые с компонентом JScrollPane.

SingleSelectionModel

Модель, поддерживающая не более одного индексированного выбора.

SpinnerModel

Модель для потенциально неограниченной последовательности значений объектов.

SwingConstants

Коллекция констант, обычно используемых для позиционирования и ориентации компонентов на экране.

UIClientPropertyKey

Этот интерфейс используется только для маркировки ключей для свойств клиента для JComponent, установленных интерфейсом пользователя, которые необходимо очистить при изменении L&F и сериализации.

UIDefaults.ActiveValue

Этот класс позволяет хранить запись в таблице по умолчанию, которая создаётся каждый раз при поиске с одним из методов getXXX(key).

UIDefaults.LazyValue

Этот класс позволяет хранить запись в таблице по умолчанию, которая не создаётся до первого поиска с одним из методов getXXX(key).

WindowConstants

Константы, используемые для управления операцией закрытия окна.

Класс Описание
AbstractAction

Этот класс предоставляет стандартные реализации для интерфейса JFC Action.

AbstractButton

Определяет общее поведение для кнопок и пунктов меню.

AbstractCellEditor

Базовый класс для CellEditors, предоставляющий стандартные реализации методов в интерфейсе CellEditor за исключением getCellEditorValue().

AbstractListModel<E>

Абстрактное определение модели данных, которая предоставляет List со своим содержимым.

AbstractSpinnerModel

Этот класс предоставляет часть ChangeListener интерфейса SpinnerModel, которая должна подходить для большинства конкретных реализаций SpinnerModel.

ActionMap

ActionMap предоставляет отображения от Object (называемых ключами или Action именами) к Action.

BorderFactory

Класс-фабрика для предоставления стандартных Border объектов.

Box

Легковесный контейнер, который использует объект BoxLayout в качестве своего менеджера компоновки.

Box.Filler

Реализация легковесного компонента, участвующего в компоновке, но не имеющего представления.

BoxLayout

Менеджер компоновки, который позволяет размещать несколько компонентов вертикально или горизонтально.

ButtonGroup

Этот класс используется для создания области множественного исключения для набора кнопок.

CellRendererPane

Этот класс вставляется между рендерерами ячеек и компонентами, которые их используют.

ComponentInputMap

ComponentInputMap — это InputMap, связанный с определённым JComponent.

DebugGraphics

Подкласс Graphics, поддерживающий отладку графики.

DefaultBoundedRangeModel

Общая реализация BoundedRangeModel.

DefaultButtonModel

Стандартная реализация модели данных компонента Button.

DefaultCellEditor

Стандартный редактор для ячеек таблиц и деревьев.

DefaultComboBoxModel<E>

Стандартная модель для раскрывающихся списков.

DefaultDesktopManager

Это реализация DesktopManager.

DefaultFocusManager

Этот класс устарел API фокуса 1.4.

DefaultListCellRenderer

Отображает элемент в списке.

DefaultListCellRenderer.UIResource

Подкласс DefaultListCellRenderer, реализующий UIResource.

DefaultListModel<E>

Этот класс слабо реализует API java.util.Vector, так как он реализует версию 1.1.x java.util.Vector, не имеет поддержки классов коллекций и уведомляет ListDataListener при изменениях.

DefaultListSelectionModel

Стандартная модель данных для выделения элементов списка.

DefaultRowSorter<M,​I>

Реализация RowSorter, которая предоставляет сортировку и фильтрацию вокруг модели данных на основе сетки.

DefaultRowSorter.ModelWrapper<M,​I>

DefaultRowSorter.ModelWrapper отвечает за предоставление данных, которые сортируются DefaultRowSorter.

DefaultSingleSelectionModel

Общая реализация SingleSelectionModel.

FocusManager

Этот класс устарел API фокуса 1.4.

GrayFilter

Фильтр изображения, который "отключает" изображение, преобразуя его в изображение в оттенках серого и осветляя пиксели в изображении.

GroupLayout

GroupLayout — это LayoutManager для иерархической группировки компонентов с целью их размещения в Container.

ImageIcon

Реализация интерфейса Icon, которая рисует значки из изображений.

InputMap

InputMap предоставляет связывание между событием ввода (в настоящее время используются только KeyStroke и Object).

InputVerifier

Этот класс предоставляет механизм валидации для Swing-компонентов.

InternalFrameFocusTraversalPolicy

FocusTraversalPolicy, который может по желанию предоставить алгоритм определения начального компонента JInternalFrame.

JApplet Устарело.
API Applet устарело, замена отсутствует.
JButton

Реализация "кнопки" с нажатием.

JCheckBox

Реализация флажка — элемента, который можно выбрать или отменить выбор, отображая его состояние пользователю.

JCheckBoxMenuItem

Пункт меню, который можно выбрать или отменить выбор.

JColorChooser

JColorChooser предоставляет панель управления, предназначенную для того, чтобы пользователь мог изменять и выбирать цвет.

JComboBox<E>

Компонент, который объединяет кнопку или поле ввода и раскрывающийся список.

JComponent

Базовый класс для всех Swing-компонентов, за исключением контейнеров верхнего уровня.

JDesktopPane

Контейнер, используемый для создания интерфейса с несколькими документами или виртуального рабочего стола.

JDialog

Основной класс для создания диалогового окна.

JEditorPane

Текстовый компонент для редактирования различных типов контента.

JFileChooser

JFileChooser предоставляет простой механизм для выбора файла пользователем.

JFormattedTextField

JFormattedTextField расширяет JTextField, добавляя поддержку форматирования произвольных значений, а также извлечения конкретного объекта после редактирования текста пользователем.

JFormattedTextField.AbstractFormatter

Экземпляры AbstractFormatter используются JFormattedTextField для обработки преобразования из объекта в строку и обратно из строки в объект.

JFormattedTextField.AbstractFormatterFactory

Экземпляры AbstractFormatterFactory используются JFormattedTextField для получения экземпляров AbstractFormatter, которые в свою очередь используются для форматирования значений.

JFrame

Расширенная версия java.awt.Frame с поддержкой архитектуры компонентов JFC/Swing.

JInternalFrame

Легковесный объект, предоставляющий многие функции обычного окна, включая перетаскивание, закрытие, отображение в виде значка, изменение размера, отображение заголовка и поддержку панели меню.

JInternalFrame.JDesktopIcon

Этот компонент представляет собой значок в свернутом состоянии JInternalFrame.

JLabel

Область отображения короткой текстовой строки, изображения или обоих.

JLayer<V extends Component>

JLayer — универсальный декоратор для Swing-компонентов, который позволяет реализовывать различные расширенные эффекты отрисовки, а также получать уведомления обо всех AWTEvent внутри его границ.

JLayeredPane

JLayeredPane добавляет глубину контейнеру JFC/Swing, позволяя компонентам перекрывать друг друга при необходимости.

JList<E>

Компонент, отображающий список объектов и позволяющий пользователю выбрать один или несколько элементов.

JList.DropLocation

Подкласс TransferHandler.DropLocation, представляющий местоположение для выброса JList.

JMenu

Реализация меню — всплывающего окна, содержащего JMenuItem , которое отображается при выборе пункта в JMenuBar.

JMenuBar

Реализация панели меню.

JMenuItem

Реализация пункта меню.

JOptionPane

JOptionPane упрощает вывод стандартного диалогового окна, которое запрашивает у пользователей значение или информирует их о чем-либо.

JPanel

JPanel — это универсальный легковесный контейнер.

JPasswordField

JPasswordField — это лёгкий компонент, позволяющий редактировать одну строку текста, где отображение указывает, что что-то было введено, но не отображает исходные символы.

JPopupMenu

Реализация всплывающего меню — небольшого окна, которое всплывает и отображает ряд вариантов.

JPopupMenu.Separator

Разделитель, специфичный для всплывающих меню.

JProgressBar

Компонент, визуально отображающий прогресс какой-либо задачи.

JRadioButton

Реализация радиокнопки — элемента, который можно выбрать или убрать выбор, и который отображает своё состояние пользователю.

JRadioButtonMenuItem

Реализация пункта меню с радиокнопкой.

JRootPane

Лёгкий контейнер, используемый в фоновом режиме JFrame, JDialog, JWindow, JApplet, и JInternalFrame.

JScrollBar

Реализация полосы прокрутки.

JScrollPane

Предоставляет прокручиваемое отображение лёгкого компонента.

JSeparator

JSeparator предоставляет компонент общего назначения для реализации разделительных линий — чаще всего используется в качестве разделителя между пунктами меню, разделяя их на логические группы.

JSlider

Компонент, позволяющий пользователю графически выбрать значение, перемещая ползунок в заданном интервале.

JSpinner

Поле ввода одной строки, которое позволяет пользователю выбрать число или значение объекта из упорядоченной последовательности.

JSpinner.DateEditor

Редактор для JSpinner, модель которого является SpinnerDateModel.

JSpinner.DefaultEditor

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

JSpinner.ListEditor

Редактор для JSpinner, модель которого является SpinnerListModel.

JSpinner.NumberEditor

Редактор для JSpinner, модель которого является SpinnerNumberModel.

JSplitPane

JSplitPane используется для разделения двух (и только двух) Component.

JTabbedPane

Компонент, позволяющий пользователю переключаться между группой компонентов, нажимая на вкладку с заданным названием и/или иконкой.

JTable

JTable используется для отображения и редактирования обычных двумерных таблиц ячеек.

JTable.DropLocation

Подкласс TransferHandler.DropLocation, представляющий расположение для выгрузки в JTable.

JTextArea

JTextArea — это многострочное поле, отображающее обычный текст.

JTextField

JTextField — это лёгкий компонент, позволяющий редактировать одну строку текста.

JTextPane

Компонент текста, который может быть помечен атрибутами, которые отображаются графически.

JToggleButton

Реализация двухсостоятельной кнопки.

JToggleButton.ToggleButtonModel

Модель ToggleButton

JToolBar

JToolBar предоставляет компонент, который полезен для отображения часто используемых Action или элементов управления.

JToolBar.Separator

Разделитель, специфичный для панели инструментов.

JToolTip

Используется для отображения «Подсказки» для компонента.

JTree

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

JTree.DropLocation

Подкласс TransferHandler.DropLocation, представляющий расположение для выгрузки в JTree.

JTree.DynamicUtilTreeNode

DynamicUtilTreeNode может оборачивать векторы/хэштаблицы/массивы/строки и создавать соответствующие узлы дерева дочерних элементов по мере необходимости.

JTree.EmptySelectionModel

EmptySelectionModel — это TreeSelectionModel, который не позволяет ничего выбирать.

JViewport

«Область просмотра» или «иллюминатор», через который вы видите основную информацию.

JWindow

JWindow — это контейнер, который можно отобразить в любом месте рабочего стола пользователя.

KeyStroke

KeyStroke представляет действие клавиши на клавиатуре или эквивалентное устройство ввода.

LayoutFocusTraversalPolicy

Политика прохождения фокуса сортировки, которая сортирует компоненты на основе их размера, положения и ориентации.

LayoutStyle

LayoutStyle предоставляет информацию о том, как расположить компоненты.

LookAndFeel

LookAndFeel, как следует из названия, инкапсулирует вид и ощущение.

MenuSelectionManager

MenuSelectionManager владеет выбором в иерархии меню.

OverlayLayout

Менеджер расположения для размещения компонентов друг над другом.

Popup

Всплывающие окна используются для отображения Component пользователю, как правило, поверх всех других Component в конкретной иерархии включения.

PopupFactory

PopupFactory, как следует из названия, используется для получения экземпляров Popup.

ProgressMonitor

Класс для мониторинга хода выполнения некоторой операции.

ProgressMonitorInputStream

Мониторинг хода чтения из некоторого потока InputStream.

RepaintManager

Этот класс управляет запросами перерисовки, позволяя минимизировать количество перерисовок, например, объединяя несколько запросов в одну перерисовку для членов древовидной структуры компонентов.

RowFilter<M,​I>

RowFilter используется для фильтрации записей из модели, чтобы они не отображались в представлении.

RowFilter.Entry<M,​I>

Объект Entry передаётся экземплярам RowFilter, позволяя фильтру получить значение данных записи и таким образом определить, следует ли отображать запись.

RowSorter<M>

RowSorter обеспечивает основу для сортировки и фильтрации.

RowSorter.SortKey

SortKey описывает порядок сортировки для определённого столбца.

ScrollPaneLayout

Менеджер расположения, используемый JScrollPane.

ScrollPaneLayout.UIResource

Версия UI-ресурса ScrollPaneLayout.

SizeRequirements

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

SizeSequence

Объект SizeSequence эффективно поддерживает упорядоченный список размеров и соответствующих позиций.

SortingFocusTraversalPolicy

Политика прохождения фокуса, которая определяет порядок прохождения, сортируя компоненты цикла прохождения фокуса на основе заданного Comparator.

SpinnerDateModel

SpinnerModel для последовательностей Date.

SpinnerListModel

Простая реализация SpinnerModel, значения которой определяются массивом или List.

SpinnerNumberModel

SpinnerModel для последовательностей чисел.

Spring

Экземпляр класса Spring содержит три свойства, которые характеризуют его поведение: минимальное, предпочтительное и максимальное значения.

SpringLayout

SpringLayout располагает дочерние элементы своего связанного контейнера в соответствии с набором ограничений.

SpringLayout.Constraints

Объект Constraints содержит ограничения, которые регулируют способ изменения размера и положения компонента в контейнере, управляемом SpringLayout.

SwingUtilities

Коллекция служебных методов для Swing.

SwingWorker<T,​V>

Абстрактный класс для выполнения длительных задач взаимодействия с графическим интерфейсом в фоновом потоке.

Таймер

Вызывает один или несколько ActionEvent через заданные интервалы.

ToolTipManager

Управляет всеми ToolTips в системе.

TransferHandler

Этот класс используется для обработки передачи Transferable к компонентам Swing и из них.

TransferHandler.DropLocation

Представляет место, куда следует вставить перетаскиваемые данные.

TransferHandler.TransferSupport

Этот класс инкапсулирует все соответствующие детали передачи буфера обмена или перетаскивания, а также позволяет настраивать аспекты опыта перетаскивания.

UIDefaults

Таблица значений по умолчанию для компонентов Swing.

UIDefaults.LazyInputMap

LazyInputMap будет создавать InputMap в своём методе createValue.

UIDefaults.ProxyLazyValue

Этот класс предоставляет реализацию LazyValue, которая может использоваться для отложенной загрузки класса для создаваемого экземпляра.

UIManager

UIManager управляет текущим внешним видом, набором доступных внешних видов, PropertyChangeListeners которые уведомляются при изменении внешнего вида, значениями по умолчанию внешнего вида и удобными методами для получения различных значений по умолчанию.

UIManager.LookAndFeelInfo

Предоставляет немного информации об установленной LookAndFeel для настройки меню или первоначальной настройки приложения.

ViewportLayout

Управляющий компоновкой по умолчанию для JViewport.

Перечисление Описание
DropMode

Режим перетаскивания, используемый для определения способа, которым компонент отслеживает и указывает место падения во время перетаскивания.

GroupLayout.Alignment

Перечисление возможных способов, которыми ParallelGroup может выравнивать свои дочерние элементы.

JTable.PrintMode

Режимы печати, используемые при печати JTable.

LayoutStyle.ComponentPlacement

ComponentPlacement — перечисление возможных способов размещения двух компонентов относительно друг друга.

RowFilter.ComparisonType

Перечисление возможных значений сравнения, поддерживаемых некоторыми из стандартных RowFilter.

SortOrder

SortOrder — перечисление возможных порядков сортировки.

SwingWorker.StateValue

Значения для свойства state.

Исключение Описание
UnsupportedLookAndFeelException

Исключение, указывающее, что запрошенные классы управления внешним видом отсутствуют на системе пользователя.

Тип аннотации Описание
SwingContainer

Аннотация, используемая для указания некоторой информации, связанной со Swing, для автоматически сгенерированных классов BeanInfo.

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/swing/package-summary.html

Spec-Zone .ru
спецификации, руководства, описания, API