Интерфейс Action

Все суперинтерфейсы:
ActionListener, EventListener
Все известные реализующие классы:
AbstractAction, BasicDesktopPaneUI.CloseAction, BasicDesktopPaneUI.MaximizeAction, BasicDesktopPaneUI.MinimizeAction, BasicDesktopPaneUI.NavigateAction, BasicDesktopPaneUI.OpenAction, BasicFileChooserUI.ApproveSelectionAction, BasicFileChooserUI.CancelSelectionAction, BasicFileChooserUI.ChangeToParentDirectoryAction, BasicFileChooserUI.GoHomeAction, BasicFileChooserUI.NewFolderAction, BasicFileChooserUI.UpdateAction, BasicInternalFrameTitlePane.CloseAction, BasicInternalFrameTitlePane.IconifyAction, BasicInternalFrameTitlePane.MaximizeAction, BasicInternalFrameTitlePane.MoveAction, BasicInternalFrameTitlePane.RestoreAction, BasicInternalFrameTitlePane.SizeAction, BasicSliderUI.ActionScroller, BasicTreeUI.TreeCancelEditingAction, BasicTreeUI.TreeHomeAction, BasicTreeUI.TreeIncrementAction, BasicTreeUI.TreePageAction, BasicTreeUI.TreeToggleAction, BasicTreeUI.TreeTraverseAction, DefaultEditorKit.BeepAction, DefaultEditorKit.CopyAction, DefaultEditorKit.CutAction, DefaultEditorKit.DefaultKeyTypedAction, DefaultEditorKit.InsertBreakAction, DefaultEditorKit.InsertContentAction, DefaultEditorKit.InsertTabAction, DefaultEditorKit.PasteAction, HTMLEditorKit.HTMLTextAction, HTMLEditorKit.InsertHTMLTextAction, MetalFileChooserUI.DirectoryComboBoxAction, StyledEditorKit.AlignmentAction, StyledEditorKit.BoldAction, StyledEditorKit.FontFamilyAction, StyledEditorKit.FontSizeAction, StyledEditorKit.ForegroundAction, StyledEditorKit.ItalicAction, StyledEditorKit.StyledTextAction, StyledEditorKit.UnderlineAction, TextAction
public interface Action
extends ActionListener

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

В дополнение к методу actionPerformed, определенному интерфейсом ActionListener, этот интерфейс позволяет приложению определить в одном месте:

  • Одну или несколько текстовых строк, описывающих функцию. Эти строки могут быть использованы, например, для отображения всплывающего текста для кнопки или для установки текста в пункте меню.
  • Один или несколько значков, изображающих функцию. Эти значки могут использоваться для изображений в элементе управления меню или для составных записей в более сложном пользовательском интерфейсе.
  • Состояние включения/выключения функциональности. Вместо того, чтобы отдельно отключать пункт меню и кнопку на панели инструментов, приложение может отключить функцию, реализующую этот интерфейс. Все компоненты, зарегистрированные как слушатели изменения состояния, затем знают, как отключить генерацию событий для этого элемента и соответствующим образом изменить отображение.

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

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

Компоненты Swing, поддерживающие Action

Многие компоненты Swing имеют свойство Action. Когда Action задается для компонента, происходит следующее:

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

В следующей таблице описаны свойства, используемые компонентами Swing , поддерживающими Actions. В таблице кнопка относится к любому подклассу AbstractButton, включая не только JButton, но и классы, такие как JMenuItem. Если не указано иное, значение свойства null в Action (или в Action, который является null приводит к установке соответствующего свойства кнопки в null.

Свойство компонента Компоненты Ключ Action Примечания
enabled Все Метод isEnabled
toolTipText Все SHORT_DESCRIPTION
actionCommand Все ACTION_COMMAND_KEY
mnemonic Все кнопки MNEMONIC_KEY Значение null или Action приводит к установке свойства mnemonic кнопки в '\0'.
text Все кнопки NAME Если вы не хотите, чтобы текст кнопки отражал текст Action, установите свойство hideActionText в true. Если hideActionText имеет значение true, установка Action изменяет текст кнопки на null, а любые изменения в NAME игнорируются. hideActionText полезно для кнопок панели инструментов, которые обычно отображают только Icon. JToolBar.add(Action) устанавливает свойство в true, если Action имеет значение, отличное от null, для LARGE_ICON_KEY или SMALL_ICON.
displayedMnemonicIndex Все кнопки DISPLAYED_MNEMONIC_INDEX_KEY Если значение DISPLAYED_MNEMONIC_INDEX_KEY выходит за пределы текста, оно игнорируется. При вызове setAction, если значение из Action равно null, индекс отображаемого символа-мнемоники не обновляется. При последующих изменениях в DISPLAYED_MNEMONIC_INDEX_KEY, null обрабатывается как -1.
icon Все кнопки, кроме JCheckBox, JToggleButton и JRadioButton. либо LARGE_ICON_KEY, либо SMALL_ICON Подклассы JMenuItem используют только SMALL_ICON. Все остальные кнопки будут использовать LARGE_ICON_KEY; если значение равно null, они будут использовать SMALL_ICON.
accelerator Все подклассы JMenuItem, за исключением JMenu. ACCELERATOR_KEY
selected JToggleButton, JCheckBox, JRadioButton, JCheckBoxMenuItem и JRadioButtonMenuItem SELECTED_KEY Компоненты, которые обрабатывают это свойство, используют значение только если оно non-null. Например, если вы установите Action, у которого есть значение null для SELECTED_KEY на JToggleButton, JToggleButton не будет обновлять свое состояние выделения никоим образом. Аналогично, всякий раз, когда состояние выделения JToggleButton меняется, оно будет устанавливать значение обратно в Action только если Action имеет значение non-null для SELECTED_KEY.
Компоненты, которые обрабатывают это свойство, поддерживают синхронизацию своего состояния выделения с этим свойством. Когда один и тот же Action используется с несколькими компонентами, все компоненты поддерживают синхронизацию состояния выделения с этим свойством. Взаимоисключающие кнопки, такие как JToggleButton в ButtonGroup, вынуждают только одну кнопку быть выделенной. Поэтому не используйте один и тот же Action, определяющий значение для свойства SELECTED_KEY, с несколькими взаимоисключающими кнопками.

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

Action использует PropertyChangeListener для уведомления слушателей об изменении Action. Спецификация бинов указывает, что имя свойства null может быть использовано для указания того, что изменилось несколько значений. По умолчанию компоненты Swing, которые принимают Action , не обрабатывают такое изменение. Чтобы указать, что Swing должен обрабатывать null в соответствии со спецификацией бинов, установите системную переменную swing.actions.reconfigureOnNull в значение String true.

С тех пор как:
1.2
См. также:
AbstractAction

Поля

Модификатор и тип Поле Описание
static String ACCELERATOR_KEY

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

static String ACTION_COMMAND_KEY

Ключ, используемый для определения команды String для ActionEvent, которая будет создана, когда Action будет уведомлен в результате нахождения в Keymap, связанной с JComponent.

static String DEFAULT

В настоящее время не используется.

static String DISPLAYED_MNEMONIC_INDEX_KEY

Ключ, используемый для хранения Integer, который соответствует индексу в тексте (определяемому свойством NAME), в котором должно отображаться оформление для мнемоники.

static String LARGE_ICON_KEY

Ключ, используемый для хранения Icon.

static String LONG_DESCRIPTION

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

static String MNEMONIC_KEY

Ключ, используемый для хранения Integer, который соответствует одному из кодов клавиш KeyEvent.

static String NAME

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

static String SELECTED_KEY

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

static String SHORT_DESCRIPTION

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

static String SMALL_ICON

Ключ, используемый для хранения небольшой Icon, такой как ImageIcon.

Методы

Модификатор и тип Метод Описание
default boolean accept​(Object sender)

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

void addPropertyChangeListener​(PropertyChangeListener listener)

Добавляет слушателя PropertyChange.

Object getValue​(String key)

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

boolean isEnabled()

Возвращает состояние включения/выключения Action.

void putValue​(String key, Object value)

Устанавливает одно из свойств этого объекта, используя соответствующий ключ.

void removePropertyChangeListener​(PropertyChangeListener listener)

Удаляет слушателя PropertyChange.

void setEnabled​(boolean b)

Устанавливает состояние включения/выключения Action.

Методы, объявленные в интерфейсе java.awt.event.ActionListener

actionPerformed

Поля

DEFAULT

static final String DEFAULT

В настоящее время не используется.

См. также:
Значения константных полей

NAME

static final String NAME

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

См. также:
Значения константных полей

SHORT_DESCRIPTION

static final String SHORT_DESCRIPTION

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

См. также:
Значения константных полей

LONG_DESCRIPTION

static final String LONG_DESCRIPTION

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

См. также:
Значения константных полей

SMALL_ICON

static final String SMALL_ICON

Ключ, используемый для хранения небольшого Icon, например, ImageIcon. Обычно используется с меню, такими как JMenuItem.

Если тот же Action используется с меню и кнопками, обычно указываются как SMALL_ICON, так и LARGE_ICON_KEY. Меню будет использовать SMALL_ICON, а кнопка — LARGE_ICON_KEY.

См. также:
Значения константных полей

ACTION_COMMAND_KEY

static final String ACTION_COMMAND_KEY

Ключ, используемый для определения команды String для ActionEvent, которая будет создана, когда Action будет уведомлен в результате нахождения в Keymap , связанной с JComponent.

См. также:
Значения константных полей

ACCELERATOR_KEY

static final String ACCELERATOR_KEY

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

С:
1.3
См. также:
Значения константных полей

MNEMONIC_KEY

static final String MNEMONIC_KEY

Ключ, используемый для хранения Integer , соответствующего одному из кодов клавиш KeyEvent. Значение обычно используется для указания мнемоники. Например: myAction.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_A) устанавливает мнемонику myAction в 'a', а myAction.putValue(Action.MNEMONIC_KEY, KeyEvent.getExtendedKeyCodeForChar('ф')) устанавливает мнемонику myAction в кириллическую букву "Еф".

С:
1.3
См. также:
Значения константных полей

SELECTED_KEY

static final String SELECTED_KEY

Ключ, используемый для хранения Boolean , соответствующего выбранному состоянию. Обычно используется только для компонентов, имеющих осмысленное состояние выбора. Например, JRadioButton и JCheckBox используют это, но экземпляры JMenu нет.

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

Примечание: значение этого поля имеет префикс 'Swing', чтобы избежать возможных конфликтов с существующими Actions.

С:
1.6
См. также:
Значения константных полей

DISPLAYED_MNEMONIC_INDEX_KEY

static final String DISPLAYED_MNEMONIC_INDEX_KEY

Ключ, используемый для хранения Integer, соответствующего индексу в тексте (определяемому свойством NAME), в котором должно отображаться оформление мнемоники. Если значение этого свойства больше или равно длине текста, оно будет обрабатываться как -1.

Примечание: значение этого поля имеет префикс 'Swing', чтобы избежать возможных конфликтов с существующими Actions.

С:
1.6
См. также:
AbstractButton.setDisplayedMnemonicIndex(int), Значения константных полей

LARGE_ICON_KEY

static final String LARGE_ICON_KEY

Ключ, используемый для хранения Icon. Обычно используется кнопками, такими как JButton и JToggleButton.

Если тот же Action используется с меню и кнопками, обычно указываются как SMALL_ICON, так и LARGE_ICON_KEY. Меню будет использовать SMALL_ICON, а кнопка — LARGE_ICON_KEY.

Примечание: значение этого поля имеет префикс 'Swing', чтобы избежать возможных конфликтов с существующими Actions.

С:
1.6
См. также:
Значения константных полей

Методы

getValue

Object getValue(String key)

Получает одно из свойств этого объекта с использованием соответствующего ключа.

Параметры:
key - String, содержащий ключ
Возвращает:
значение Object
См. также:
putValue(java.lang.String, java.lang.Object)

putValue

void putValue(String key,
              Object value)

Устанавливает одно из свойств этого объекта с использованием соответствующего ключа. Если значение изменилось, слушателям отправляется PropertyChangeEvent.

Параметры:
key - String , содержащий ключ
value - значение Object

setEnabled

void setEnabled(boolean b)

Устанавливает состояние активности Action. В активном состоянии любой компонент, связанный с этим объектом, активен и может вызывать метод actionPerformed этого объекта. Если значение изменилось, слушателям отправляется PropertyChangeEvent.

Параметры:
b - true для активации этого Action, false для деактивации
См. также:
accept(java.lang.Object)

isEnabled

boolean isEnabled()

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

Возвращает:
true, если этот Action активен
См. также:
accept(java.lang.Object)

accept

default boolean accept(Object sender)

Определяет, должно ли действие выполняться с указанным объектом отправителя. Отправитель может быть null. Метод должен возвращать false, если действие отключено.

Параметры:
sender - объект для проверки, может быть null
Возвращает:
true , если действие должно выполняться с объектом отправителя, должно быть false, если действие отключено.
См. также:
isEnabled(), setEnabled(boolean)

addPropertyChangeListener

void addPropertyChangeListener(PropertyChangeListener listener)

Добавляет слушателя PropertyChange. Контейнеры и прикрепленные компоненты используют эти методы для регистрации интереса к этому объекту Action. При изменении состояния активности или других свойств зарегистрированные слушатели получают информацию об изменении.

Параметры:
listener - объект PropertyChangeListener

removePropertyChangeListener

void removePropertyChangeListener(PropertyChangeListener listener)

Удаляет слушателя PropertyChange.

Параметры:
listener - объект PropertyChangeListener
См. также:
addPropertyChangeListener(java.beans.PropertyChangeListener)

© 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/Action.html

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