Пакет 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.
Связанная документация
Для обзоров, учебных пособий, примеров, руководств и другой документации см.:- Подключение Swing
- Учебник Java
- Онлайн-обучение на Java Developer Connection SM
- Главная страница Java Foundation Classes (JFC)
| Интерфейс | Описание |
|---|---|
| Action | Интерфейс |
| BoundedRangeModel | Определяет модель данных, используемую компонентами, такими как |
| ButtonModel | Модель состояния для кнопок. |
| CellEditor | Этот интерфейс определяет методы, которые должен реализовать любой общий редактор. |
| ComboBoxEditor | Компонент-редактор, используемый для компонентов JComboBox. |
| ComboBoxModel<E> | Модель данных для раскрывающегося списка. |
| DesktopManager | Объекты DesktopManager принадлежат объекту JDesktopPane. |
| Icon | Небольшой рисунок фиксированного размера, обычно используемый для украшения компонентов. |
| JComboBox.KeySelectionManager | Интерфейс, определяющий |
| ListCellRenderer<E> | Определяет компоненты, которые могут использоваться в качестве «штампов» для рисования ячеек в JList. |
| ListModel<E> | Этот интерфейс определяет методы, которые компоненты, такие как JList, используют для получения значения каждой ячейки в списке и длины списка. |
| ListSelectionModel | Этот интерфейс представляет текущее состояние выбора для любого из компонентов, отображающих список значений со стабильными индексами. |
| MenuElement | Любой компонент, который можно разместить в меню, должен реализовывать этот интерфейс. |
| MutableComboBoxModel<E> | Изменяемая версия |
| Painter<T> | Делегат рисования. |
| Renderer | Определяет требования к объекту, отвечающему за «рендеринг» (отображение) значения. |
| RootPaneContainer | Этот интерфейс реализуется компонентами, у которых единственный дочерний элемент JRootPane: JDialog, JFrame, JWindow, JApplet, JInternalFrame. |
| Scrollable | Интерфейс, предоставляющий информацию контейнеру прокрутки, например, JScrollPane. |
| ScrollPaneConstants | Константы, используемые с компонентом JScrollPane. |
| SingleSelectionModel | Модель, поддерживающая не более одного индексированного выбора. |
| SpinnerModel | Модель для потенциально неограниченной последовательности значений объектов. |
| SwingConstants | Коллекция констант, обычно используемых для позиционирования и ориентации компонентов на экране. |
| UIClientPropertyKey | Этот интерфейс используется только для маркировки ключей для свойств клиента для |
| UIDefaults.ActiveValue | Этот класс позволяет хранить запись в таблице по умолчанию, которая создаётся каждый раз при поиске с одним из методов |
| UIDefaults.LazyValue | Этот класс позволяет хранить запись в таблице по умолчанию, которая не создаётся до первого поиска с одним из методов |
| WindowConstants | Константы, используемые для управления операцией закрытия окна. |
| Класс | Описание |
|---|---|
| AbstractAction | Этот класс предоставляет стандартные реализации для интерфейса JFC |
| AbstractButton | Определяет общее поведение для кнопок и пунктов меню. |
| AbstractCellEditor | Базовый класс для |
| AbstractListModel<E> | Абстрактное определение модели данных, которая предоставляет |
| AbstractSpinnerModel | Этот класс предоставляет часть ChangeListener интерфейса SpinnerModel, которая должна подходить для большинства конкретных реализаций SpinnerModel. |
| ActionMap |
|
| BorderFactory | Класс-фабрика для предоставления стандартных |
| Box | Легковесный контейнер, который использует объект BoxLayout в качестве своего менеджера компоновки. |
| Box.Filler | Реализация легковесного компонента, участвующего в компоновке, но не имеющего представления. |
| BoxLayout | Менеджер компоновки, который позволяет размещать несколько компонентов вертикально или горизонтально. |
| ButtonGroup | Этот класс используется для создания области множественного исключения для набора кнопок. |
| CellRendererPane | Этот класс вставляется между рендерерами ячеек и компонентами, которые их используют. |
| ComponentInputMap |
|
| DebugGraphics | Подкласс Graphics, поддерживающий отладку графики. |
| DefaultBoundedRangeModel | Общая реализация BoundedRangeModel. |
| DefaultButtonModel | Стандартная реализация модели данных компонента |
| DefaultCellEditor | Стандартный редактор для ячеек таблиц и деревьев. |
| DefaultComboBoxModel<E> | Стандартная модель для раскрывающихся списков. |
| DefaultDesktopManager | Это реализация |
| DefaultFocusManager | Этот класс устарел API фокуса 1.4. |
| DefaultListCellRenderer | Отображает элемент в списке. |
| DefaultListCellRenderer.UIResource | Подкласс DefaultListCellRenderer, реализующий UIResource. |
| DefaultListModel<E> | Этот класс слабо реализует API |
| DefaultListSelectionModel | Стандартная модель данных для выделения элементов списка. |
| DefaultRowSorter<M,I> | Реализация |
| DefaultRowSorter.ModelWrapper<M,I> |
|
| DefaultSingleSelectionModel | Общая реализация SingleSelectionModel. |
| FocusManager | Этот класс устарел API фокуса 1.4. |
| GrayFilter | Фильтр изображения, который "отключает" изображение, преобразуя его в изображение в оттенках серого и осветляя пиксели в изображении. |
| GroupLayout |
|
| ImageIcon | Реализация интерфейса Icon, которая рисует значки из изображений. |
| InputMap |
|
| InputVerifier | Этот класс предоставляет механизм валидации для Swing-компонентов. |
| InternalFrameFocusTraversalPolicy | FocusTraversalPolicy, который может по желанию предоставить алгоритм определения начального компонента JInternalFrame. |
| JApplet | Устарело. API Applet устарело, замена отсутствует. |
| JButton | Реализация "кнопки" с нажатием. |
| JCheckBox | Реализация флажка — элемента, который можно выбрать или отменить выбор, отображая его состояние пользователю. |
| JCheckBoxMenuItem | Пункт меню, который можно выбрать или отменить выбор. |
| JColorChooser |
|
| JComboBox<E> | Компонент, который объединяет кнопку или поле ввода и раскрывающийся список. |
| JComponent | Базовый класс для всех Swing-компонентов, за исключением контейнеров верхнего уровня. |
| JDesktopPane | Контейнер, используемый для создания интерфейса с несколькими документами или виртуального рабочего стола. |
| JDialog | Основной класс для создания диалогового окна. |
| JEditorPane | Текстовый компонент для редактирования различных типов контента. |
| JFileChooser |
|
| JFormattedTextField |
|
| JFormattedTextField.AbstractFormatter | Экземпляры |
| JFormattedTextField.AbstractFormatterFactory | Экземпляры |
| JFrame | Расширенная версия |
| JInternalFrame | Легковесный объект, предоставляющий многие функции обычного окна, включая перетаскивание, закрытие, отображение в виде значка, изменение размера, отображение заголовка и поддержку панели меню. |
| JInternalFrame.JDesktopIcon | Этот компонент представляет собой значок в свернутом состоянии |
| JLabel | Область отображения короткой текстовой строки, изображения или обоих. |
| JLayer<V extends Component> |
|
| JLayeredPane |
|
| JList<E> | Компонент, отображающий список объектов и позволяющий пользователю выбрать один или несколько элементов. |
| JList.DropLocation | Подкласс |
| JMenu | Реализация меню — всплывающего окна, содержащего |
| JMenuBar | Реализация панели меню. |
| JMenuItem | Реализация пункта меню. |
| JOptionPane |
|
| JPanel |
|
| JPasswordField |
|
|---|---|
| JPopupMenu | Реализация всплывающего меню — небольшого окна, которое всплывает и отображает ряд вариантов. |
| JPopupMenu.Separator | Разделитель, специфичный для всплывающих меню. |
| JProgressBar | Компонент, визуально отображающий прогресс какой-либо задачи. |
| JRadioButton | Реализация радиокнопки — элемента, который можно выбрать или убрать выбор, и который отображает своё состояние пользователю. |
| JRadioButtonMenuItem | Реализация пункта меню с радиокнопкой. |
| JRootPane | Лёгкий контейнер, используемый в фоновом режиме |
| JScrollBar | Реализация полосы прокрутки. |
| JScrollPane | Предоставляет прокручиваемое отображение лёгкого компонента. |
| JSeparator |
|
| JSlider | Компонент, позволяющий пользователю графически выбрать значение, перемещая ползунок в заданном интервале. |
| JSpinner | Поле ввода одной строки, которое позволяет пользователю выбрать число или значение объекта из упорядоченной последовательности. |
| JSpinner.DateEditor | Редактор для |
| JSpinner.DefaultEditor | Простой базовый класс для более специализированных редакторов, отображающий только для чтения текущее значение модели с |
| JSpinner.ListEditor | Редактор для |
| JSpinner.NumberEditor | Редактор для |
| JSplitPane |
|
| JTabbedPane | Компонент, позволяющий пользователю переключаться между группой компонентов, нажимая на вкладку с заданным названием и/или иконкой. |
| JTable |
|
| JTable.DropLocation | Подкласс |
| JTextArea |
|
| JTextField |
|
| JTextPane | Компонент текста, который может быть помечен атрибутами, которые отображаются графически. |
| JToggleButton | Реализация двухсостоятельной кнопки. |
| JToggleButton.ToggleButtonModel | Модель ToggleButton |
| JToolBar |
|
| JToolBar.Separator | Разделитель, специфичный для панели инструментов. |
| JToolTip | Используется для отображения «Подсказки» для компонента. |
| JTree | Элемент управления, который отображает набор иерархических данных в виде схемы. |
| JTree.DropLocation | Подкласс |
| JTree.DynamicUtilTreeNode |
|
| JTree.EmptySelectionModel |
|
| JViewport | «Область просмотра» или «иллюминатор», через который вы видите основную информацию. |
| JWindow |
|
| KeyStroke | KeyStroke представляет действие клавиши на клавиатуре или эквивалентное устройство ввода. |
| LayoutFocusTraversalPolicy | Политика прохождения фокуса сортировки, которая сортирует компоненты на основе их размера, положения и ориентации. |
| LayoutStyle |
|
| LookAndFeel |
|
| MenuSelectionManager | MenuSelectionManager владеет выбором в иерархии меню. |
| OverlayLayout | Менеджер расположения для размещения компонентов друг над другом. |
| Popup | Всплывающие окна используются для отображения |
| PopupFactory |
|
| ProgressMonitor | Класс для мониторинга хода выполнения некоторой операции. |
| ProgressMonitorInputStream | Мониторинг хода чтения из некоторого потока InputStream. |
| RepaintManager | Этот класс управляет запросами перерисовки, позволяя минимизировать количество перерисовок, например, объединяя несколько запросов в одну перерисовку для членов древовидной структуры компонентов. |
| RowFilter<M,I> |
|
| RowFilter.Entry<M,I> | Объект |
| RowSorter<M> |
|
| RowSorter.SortKey | SortKey описывает порядок сортировки для определённого столбца. |
| ScrollPaneLayout | Менеджер расположения, используемый |
| ScrollPaneLayout.UIResource | Версия UI-ресурса |
| SizeRequirements | Для удобства менеджеров расположения, вычисляет информацию о размере и позиции компонентов. |
| SizeSequence | Объект |
| SortingFocusTraversalPolicy | Политика прохождения фокуса, которая определяет порядок прохождения, сортируя компоненты цикла прохождения фокуса на основе заданного Comparator. |
| SpinnerDateModel |
|
| SpinnerListModel | Простая реализация |
| SpinnerNumberModel |
|
| Spring | Экземпляр класса |
| SpringLayout |
|
| SpringLayout.Constraints | Объект |
| SwingUtilities | Коллекция служебных методов для Swing. |
| SwingWorker<T,V> | Абстрактный класс для выполнения длительных задач взаимодействия с графическим интерфейсом в фоновом потоке. |
| Таймер | Вызывает один или несколько |
|---|---|
| ToolTipManager | Управляет всеми |
| TransferHandler | Этот класс используется для обработки передачи |
| TransferHandler.DropLocation | Представляет место, куда следует вставить перетаскиваемые данные. |
| TransferHandler.TransferSupport | Этот класс инкапсулирует все соответствующие детали передачи буфера обмена или перетаскивания, а также позволяет настраивать аспекты опыта перетаскивания. |
| UIDefaults | Таблица значений по умолчанию для компонентов Swing. |
| UIDefaults.LazyInputMap |
|
| UIDefaults.ProxyLazyValue | Этот класс предоставляет реализацию |
| UIManager |
|
| UIManager.LookAndFeelInfo | Предоставляет немного информации об установленной |
| ViewportLayout | Управляющий компоновкой по умолчанию для |
| Перечисление | Описание |
|---|---|
| DropMode | Режим перетаскивания, используемый для определения способа, которым компонент отслеживает и указывает место падения во время перетаскивания. |
| GroupLayout.Alignment | Перечисление возможных способов, которыми |
| JTable.PrintMode | Режимы печати, используемые при печати |
| LayoutStyle.ComponentPlacement |
|
| RowFilter.ComparisonType | Перечисление возможных значений сравнения, поддерживаемых некоторыми из стандартных |
| SortOrder | SortOrder — перечисление возможных порядков сортировки. |
| SwingWorker.StateValue | Значения для свойства |
| Исключение | Описание |
|---|---|
| UnsupportedLookAndFeelException | Исключение, указывающее, что запрошенные классы управления внешним видом отсутствуют на системе пользователя. |
| Тип аннотации | Описание |
|---|---|
| SwingContainer | Аннотация, используемая для указания некоторой информации, связанной со Swing, для автоматически сгенерированных классов |
© 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