Spec-Zone.ru › OpenJDK 25

Пакет javax.swing

package 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(Runnable), чтобы все изменения отображения пользовательского интерфейса выполнялись после обработки всех слушателей модели, установленных компонентом.

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

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

Политика Swing в отношении сериализации

Предупреждение: сериализованные объекты любого класса Swing не будут совместимы с будущими версиями Swing. Текущая поддержка сериализации предназначена для краткосрочного хранения или RMI между приложениями, работающими с одной и той же версией Swing. Начиная с версии 1.4 в пакет java.beans добавлена поддержка долгосрочного хранения всех JavaBeans.

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

Обзоры, учебные материалы, примеры, руководства и другую документацию см. здесь:
  • Обзор архитектуры Swing
  • Учебное руководство по Java
  • Обучение и сертификация по Java SE
С момента выпуска:
1.2
Пакет Описание
javax.swing.border
Предоставляет классы и интерфейсы для рисования специализированных границ вокруг компонента Swing.
javax.swing.colorchooser
Содержит классы и интерфейсы, используемые компонентом JColorChooser.
javax.swing.event
Предоставляет средства для работы с событиями, генерируемыми компонентами Swing.
javax.swing.filechooser
Содержит классы и интерфейсы, используемые компонентом JFileChooser.
javax.swing.plaf
Предоставляет один интерфейс и множество абстрактных классов, которые Swing использует для поддержки подключаемых вариантов внешнего вида и поведения.
javax.swing.table
Предоставляет классы и интерфейсы для работы с javax.swing.JTable.
javax.swing.text
Предоставляет классы и интерфейсы для работы с редактируемыми и нередактируемыми текстовыми компонентами.
javax.swing.tree
Предоставляет классы и интерфейсы для работы с javax.swing.JTree.
javax.swing.undo
Позволяет разработчикам добавлять поддержку отмены и повтора действий в такие приложения, как текстовые редакторы.
Класс Описание
AbstractAction
Этот класс предоставляет реализации по умолчанию для интерфейса JFC Action.
AbstractButton
Определяет общее поведение кнопок и элементов меню.
AbstractCellEditor
Базовый класс для CellEditors, предоставляющий реализации по умолчанию для методов интерфейса CellEditor, за исключением getCellEditorValue().
AbstractListModel<E>
Абстрактное определение модели данных, предоставляющей List своё содержимое.
AbstractSpinnerModel
Этот класс предоставляет часть интерфейса SpinnerModel, отвечающую за ChangeListener, и подходит для большинства конкретных реализаций SpinnerModel.
Action
Интерфейс Action полезно расширяет интерфейс ActionListener в тех случаях, когда одна и та же функциональность доступна через несколько элементов управления.
ActionMap
ActionMap сопоставляет Objects (называемые ключами или именами Action) с Actions.
BorderFactory
Фабричный класс для создания стандартных объектов Border.
BoundedRangeModel
Определяет модель данных, используемую такими компонентами, как Sliders и ProgressBars.
Box
Легковесный контейнер, использующий объект BoxLayout в качестве менеджера компоновки.
Box.Filler
Реализация легковесного компонента, участвующего в компоновке, но не имеющего представления.
BoxLayout
Менеджер компоновки, позволяющий размещать несколько компонентов вертикально или горизонтально.
ButtonGroup
Этот класс используется для создания области взаимного исключения для набора кнопок.
ButtonModel
Модель состояния кнопок.
CellEditor
Этот интерфейс определяет методы, которые должен уметь реализовывать любой универсальный редактор.
CellRendererPane
Этот класс помещается между средствами отображения ячеек и использующими их компонентами.
ComboBoxEditor
Компонент редактора, используемый компонентами JComboBox.
ComboBoxModel<E>
Модель данных для раскрывающегося списка.
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: он реализует версию java.util.Vector 1.1.x, не поддерживает классы коллекций и уведомляет ListDataListeners об изменениях.
DefaultListSelectionModel
Модель данных выбора элементов списка по умолчанию.
DefaultRowSorter<M,I>
Реализация RowSorter, обеспечивающая сортировку и фильтрацию табличной модели данных.
DefaultRowSorter.ModelWrapper<M,I>
DefaultRowSorter.ModelWrapper отвечает за предоставление данных, сортируемых с помощью DefaultRowSorter.
DefaultSingleSelectionModel
Универсальная реализация SingleSelectionModel.
DesktopManager
Объекты DesktopManager принадлежат объекту JDesktopPane.
DropMode
Режимы перетаскивания, определяющие способ отслеживания компонентом места сброса и его отображения во время перетаскивания.
FocusManager
Этот класс устарел в связи с появлением API фокуса версии 1.4.
GrayFilter
Фильтр изображений, который «отключает» изображение, преобразуя его в оттенки серого и увеличивая яркость пикселей.
GroupLayout
GroupLayout — это LayoutManager, который иерархически группирует компоненты, чтобы расположить их в Container.
GroupLayout.Alignment
Перечисление возможных способов выравнивания дочерних элементов в ParallelGroup.
Icon
Небольшое изображение фиксированного размера, обычно используемое для оформления компонентов.
ImageIcon
Реализация интерфейса Icon, которая рисует значки на основе изображений.
InputMap
InputMap связывает событие ввода (в настоящее время используются только KeyStrokes) с Object.
InputVerifier
Этот класс предоставляет механизм проверки данных для компонентов Swing.
InternalFrameFocusTraversalPolicy
FocusTraversalPolicy, который при необходимости может предоставить алгоритм определения начального Component для JInternalFrame.
JApplet Устарело, планируется удаление: этот элемент API может быть удалён в будущей версии.
API Applet устарел, замены нет.
JButton
Реализация кнопки «нажать».
JCheckBox
Реализация флажка — элемента, который можно установить или снять и который отображает своё состояние пользователю.
JCheckBoxMenuItem
Элемент меню, который можно установить или снять.
JColorChooser
JColorChooser предоставляет панель элементов управления, позволяющую пользователю изменять и выбирать цвет.
JComboBox<E>
Компонент, объединяющий кнопку или редактируемое поле с раскрывающимся списком.
JComboBox.KeySelectionManager
Интерфейс, определяющий KeySelectionManager.
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, позволяющий реализовывать различные расширенные эффекты рисования, а также получать уведомления обо всех AWTEvents, возникающих в его пределах.
JLayeredPane
JLayeredPane добавляет глубину контейнеру JFC/Swing, позволяя компонентам при необходимости перекрывать друг друга.
JList<E>
Компонент, отображающий список объектов и позволяющий пользователю выбрать один или несколько элементов.
JList.DropLocation
Подкласс TransferHandler.DropLocation, представляющий место сброса для JList.
JMenu
Реализация меню — всплывающего окна с элементами JMenuItems, которое отображается, когда пользователь выбирает элемент в 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 используется для разделения двух (и только двух) Components.
JTabbedPane
Компонент, позволяющий пользователю переключаться между группой компонентов, нажимая вкладку с заданным заголовком и/или значком.
JTable
JTable используется для отображения и редактирования обычных двумерных таблиц ячеек.
JTable.DropLocation
Подкласс TransferHandler.DropLocation, представляющий место сброса для JTable.
JTable.PrintMode
Режимы печати, используемые при печати JTables.
JTextArea
JTextArea — это многострочная область для отображения обычного текста.
JTextField
JTextField — легковесный компонент для редактирования одной строки текста.
JTextPane
Текстовый компонент, к которому можно применять графически отображаемые атрибуты разметки.
JToggleButton
Реализация двухпозиционной кнопки.
JToggleButton.ToggleButtonModel
Модель ToggleButton
JToolBar
JToolBar предоставляет компонент для отображения часто используемых Actions или элементов управления.
JToolBar.Separator
Разделитель, предназначенный для панели инструментов.
JToolTip
Используется для отображения подсказки для компонента.
JTree
Элемент управления, отображающий иерархический набор данных в виде структуры.
JTree.DropLocation
Подкласс TransferHandler.DropLocation, представляющий место сброса для JTree.
JTree.DynamicUtilTreeNode
DynamicUtilTreeNode может оборачивать векторы, хеш-таблицы, массивы и строки, а также при необходимости создавать соответствующие дочерние узлы дерева.
JTree.EmptySelectionModel
EmptySelectionModel — это TreeSelectionModel, не позволяющий ничего выбрать.
JViewport
«Область просмотра» или «иллюминатор», через который видна лежащая под ним информация.
JWindow
JWindow — это контейнер, который можно разместить в любом месте рабочего стола пользователя.
KeyStroke
KeyStroke представляет нажатие клавиши на клавиатуре или эквивалентном устройстве ввода.
LayoutFocusTraversalPolicy
SortingFocusTraversalPolicy, который сортирует компоненты по размеру, положению и ориентации.
LayoutStyle
LayoutStyle предоставляет информацию о размещении компонентов.
LayoutStyle.ComponentPlacement
ComponentPlacement — это перечисление возможных способов взаимного размещения двух компонентов.
ListCellRenderer<E>
Определяет компоненты, которые можно использовать как «штампы» для отрисовки ячеек JList.
ListModel<E>
Этот интерфейс определяет методы, с помощью которых такие компоненты, как JList, получают значение каждой ячейки списка и длину списка.
ListSelectionModel
Этот интерфейс представляет текущее состояние выбора для компонентов, отображающих список значений со стабильными индексами.
LookAndFeel
LookAndFeel, как следует из названия, инкапсулирует внешний вид и поведение.
MenuElement
Любой компонент, который можно поместить в меню, должен реализовывать этот интерфейс.
MenuSelectionManager
MenuSelectionManager управляет выбором в иерархии меню.
MutableComboBoxModel<E>
Изменяемая версия ComboBoxModel.
OverlayLayout
Менеджер компоновки для размещения компонентов поверх друг друга.
Painter<T>
Делегат для рисования.
Popup
Всплывающие окна используются для отображения пользователю Component, обычно поверх всех остальных Components в определённой иерархии контейнеров.
PopupFactory
PopupFactory, как следует из названия, используется для получения экземпляров Popups.
ProgressMonitor
Класс для отслеживания хода выполнения операции.
ProgressMonitorInputStream
Отслеживает ход чтения из InputStream.
Renderer
Определяет требования к объекту, отвечающему за визуализацию значения.
RepaintManager
Этот класс управляет запросами на перерисовку, позволяя свести их количество к минимуму, например объединяя несколько запросов в один для компонентов дерева.
RootPaneContainer
Этот интерфейс реализуется компонентами с единственным дочерним элементом JRootPane: JDialog, JFrame, JWindow, JApplet, JInternalFrame.
RowFilter<M,I>
RowFilter используется для фильтрации записей модели, чтобы они не отображались в представлении.
RowFilter.ComparisonType
Перечисление возможных значений сравнения, поддерживаемых некоторыми фильтрами RowFilter по умолчанию.
RowFilter.Entry<M,I>
Объект Entry передаётся экземплярам RowFilter, что позволяет фильтру получить значение данных записи и определить, следует ли её отображать.
RowSorter<M>
RowSorter служит основой для сортировки и фильтрации.
RowSorter.SortKey
SortKey описывает порядок сортировки для определённого столбца.
Scrollable
Интерфейс, предоставляющий информацию прокручиваемому контейнеру, например JScrollPane.
ScrollPaneConstants
Константы, используемые компонентом JScrollPane.
ScrollPaneLayout
Менеджер компоновки, используемый компонентом JScrollPane.
ScrollPaneLayout.UIResource
Версия ScrollPaneLayout, являющаяся ресурсом пользовательского интерфейса.
SingleSelectionModel
Модель, поддерживающая выбор не более одного элемента по индексу.
SizeRequirements
Для удобства менеджеров компоновки вычисляет информацию о размере и положении компонентов.
SizeSequence
Объект SizeSequence эффективно поддерживает упорядоченный список размеров и соответствующих позиций.
SortingFocusTraversalPolicy
Политика обхода фокуса, определяющая порядок обхода путем сортировки компонентов цикла обхода фокуса на основе заданного компаратора.
SortOrder
SortOrder — перечисление возможных порядков сортировки.
SpinnerDateModel
SpinnerModel для последовательностей Date.
SpinnerListModel
Простая реализация SpinnerModel, значения которой задаются массивом или List.
SpinnerModel
Модель потенциально неограниченной последовательности значений объектов.
SpinnerNumberModel
SpinnerModel для последовательностей чисел.
Spring
Экземпляр класса Spring содержит три свойства, характеризующие его поведение: значения минимальное, предпочтительное и максимальное.
SpringLayout
SpringLayout размещает дочерние элементы связанного с ним контейнера в соответствии с набором ограничений.
SpringLayout.Constraints
Объект Constraints содержит ограничения, определяющие, как изменяются размер и положение компонента в контейнере, управляемом SpringLayout.
SwingConstants
Набор констант, обычно используемых для позиционирования и ориентации компонентов на экране.
SwingContainer
Аннотация, используемая для указания некоторой информации, связанной со Swing, для автоматически сгенерированных классов BeanInfo.
SwingUtilities
Набор вспомогательных методов для Swing.
SwingWorker<T,V>
Абстрактный класс для выполнения длительных задач взаимодействия с графическим интерфейсом в фоновом потоке.
SwingWorker.StateValue
Значения связанного свойства state.
Timer
Генерирует одно или несколько событий ActionEvent с заданными интервалами.
ToolTipManager
Управляет всеми ToolTips в системе.
TransferHandler
Этот класс используется для обработки передачи Transferable в компоненты Swing и из них.
TransferHandler.DropLocation
Представляет место, куда следует вставить перетаскиваемые данные.
TransferHandler.TransferSupport
Этот класс инкапсулирует все важные сведения о передаче данных через буфер обмена или перетаскиванием, а также позволяет настраивать различные аспекты перетаскивания.
UIClientPropertyKey
Этот интерфейс используется только для маркировки ключей клиентских свойств для JComponent, задаваемых пользовательским интерфейсом, которые необходимо очистить при смене L&F и сериализации.
UIDefaults
Таблица значений по умолчанию для компонентов Swing.
UIDefaults.ActiveValue
Этот класс позволяет хранить в таблице значений по умолчанию запись, которая создается каждый раз при обращении к ней одним из методов getXXX(key).
UIDefaults.LazyInputMap
LazyInputMap создаст InputMap в своем методе createValue.
UIDefaults.LazyValue
Этот класс позволяет хранить в таблице значений по умолчанию запись, которая создается только при первом обращении к ней одним из методов getXXX(key).
UIDefaults.ProxyLazyValue
Этот класс предоставляет реализацию LazyValue, которую можно использовать для отложенной загрузки класса создаваемого экземпляра.
UIManager
UIManager управляет текущим оформлением, набором доступных вариантов оформления, PropertyChangeListeners, получающих уведомления об изменении оформления, значениями оформления по умолчанию и вспомогательными методами для получения различных значений по умолчанию.
UIManager.LookAndFeelInfo
Предоставляет краткую информацию об установленном LookAndFeel для настройки меню или первоначальной настройки приложения.
UnsupportedLookAndFeelException
Исключение, указывающее, что запрошенные классы управления оформлением отсутствуют в системе пользователя.
ViewportLayout
Менеджер компоновки по умолчанию для JViewport.
WindowConstants
Константы, используемые для управления операцией закрытия окна.

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, включая общие сведения, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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/25/docs/api/java.desktop/javax/swing/package-summary.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API