- 所有父级接口:
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
Action 接口为 ActionListener 接口提供了有用的扩展。
除了 ActionListener 接口定义的 actionPerformed 方法外,该接口还允许应用程序在一个地方定义:
- 描述函数的一个或多个文本字符串。例如,这些字符串可用于显示按钮的悬停文本或设置菜单项中的文本。
- 描述功能的一个或多个图标。这些图标可用于菜单控件中的图像,或用于更复杂的用户界面中的复合条目。
- 功能的启用/禁用状态。应用程序不必单独禁用菜单项和工具栏按钮,而是可以禁用实现此接口的功能。注册为状态更改监听的所有组件然后知道禁用该项目的事件生成并相应地修改显示。
此接口可以添加到现有类或用于创建适配器(通常,通过子类化 AbstractAction )。然后可以将 Action 对象添加到多个 Action 感知容器并连接到 Action 支持的组件。然后可以通过调用 Action 对象的 setEnabled 方法一次性激活或停用 GUI 控件。
请注意,Action 实现在存储方面往往比典型的 ActionListener 更昂贵,后者不提供集中控制功能和广播属性更改的好处。出于这个原因,您应该注意只在需要它们的好处的地方使用 Action ,而在其他地方使用简单的 ActionListener 。
摆动组件支撑 Action
许多 Swing 组件都有一个 Action 属性。在组件上设置 Action 时,会发生以下情况:
Action作为ActionListener添加到组件中。- 该组件配置其某些属性以匹配
Action。 - 该组件在
Action上安装了一个PropertyChangeListener,以便该组件可以更改其属性以反映Action的属性更改。
下表描述了支持 Actions 的 Swing 组件使用的属性。在表中,button 指的是任何 AbstractButton 子类,其中不仅包括 JButton,还包括 JMenuItem 等类。除非另有说明,否则 Action(或 Action 即 null)中的 null 属性值会导致按钮的相应属性设置为 null。
| 组件属性 | 组件 | 操作键 | 笔记 |
|---|---|---|---|
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 的工具栏按钮很有用。如果 Action 的 LARGE_ICON_KEY 或 SMALL_ICON 具有非 null 值,则 JToolBar.add(Action) 将属性设置为 true。 |
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 时才使用该值。例如,如果您在 JToggleButton 上为 SELECTED_KEY 设置了一个具有 null 值的 Action,则 JToggleButton 将不会以任何方式更新它的选定状态。类似地,只要 JToggleButton 的选定状态发生变化,它只会在 Action 具有 SELECTED_KEY 的 non-null 值的情况下将值设置回 Action。遵循此属性的组件会使其选定状态与此属性保持同步。当同一个 Action 与多个组件一起使用时,所有组件都会将其选定状态与此属性保持同步。互斥按钮,例如 ButtonGroup 中的 JToggleButton s,强制仅选择其中一个按钮。因此,不要使用为多个互斥按钮定义 SELECTED_KEY 属性值的相同 Action。 |
JPopupMenu、JToolBar 和 JMenu 都提供了创建组件和在相应组件上设置 Action 的便捷方法。有关更多信息,请参阅这些类中的每一个。
Action 使用 PropertyChangeListener 通知听众 Action 已更改。 beans 规范表明 null 属性名称可用于指示多个值已更改。默认情况下,采用 Action 的 Swing 组件不处理此类更改。要指示 Swing 应根据 beans 规范处理 null,请将系统属性 swing.actions.reconfigureOnNull 设置为 String 值 true。
- 自从:
- 1.2
- 参见:
-
字段摘要
字段修饰符和类型Field描述static final String用于存储KeyStroke的密钥用作操作的加速器。static final String用于确定ActionEvent的命令String的密钥,当Action将由于驻留在与JComponent关联的Keymap中而被通知时,将创建该命令。static final String当前未使用。static final String用于存储Integer的键对应于文本中的索引(由NAME属性标识),助记符的装饰应该呈现在该处。static final String用于存储Icon的密钥。static final String用于存储操作的较长String描述的密钥可用于上下文相关的帮助。static final String用于存储与KeyEvent键码之一对应的Integer的键。static final String用于存储操作名称的键,用于菜单或按钮。static final String用于存储与所选状态对应的Boolean的密钥。static final String用于存储操作的简短String描述的键,用于工具提示文本。static final String用于存储小的Icon的密钥,例如ImageIcon。 -
方法总结
修饰符和类型方法描述default boolean确定是否应使用指定的发件人对象执行操作。void添加一个PropertyChange监听器。使用关联的键获取此对象的属性之一。boolean返回Action的启用状态。void使用关联的键设置此对象的属性之一。void删除PropertyChange监听器。voidsetEnabled(boolean b) 设置Action的启用状态。在接口 java.awt.event.ActionListener 中声明的方法
actionPerformed
-
字段详细信息
-
DEFAULT
当前未使用。- 参见:
-
NAME
用于存储操作名称的键,用于菜单或按钮。- 参见:
-
SHORT_DESCRIPTION
用于存储操作的简短String描述的键,用于工具提示文本。- 参见:
-
LONG_DESCRIPTION
用于存储操作的较长String描述的密钥可用于上下文相关的帮助。- 参见:
-
SMALL_ICON
用于存储小的Icon的密钥,例如ImageIcon。这通常与JMenuItem等菜单一起使用。如果相同的
Action用于菜单和按钮,您通常会同时指定SMALL_ICON和LARGE_ICON_KEY。菜单将使用SMALL_ICON,按钮将使用LARGE_ICON_KEY。- 参见:
-
ACTION_COMMAND_KEY
用于确定ActionEvent的命令String的密钥,当Action将由于驻留在与JComponent关联的Keymap中而被通知时,将创建该命令。- 参见:
-
ACCELERATOR_KEY
用于存储KeyStroke的密钥用作操作的加速器。- 自从:
- 1.3
- 参见:
-
MNEMONIC_KEY
用于存储与KeyEvent键码之一对应的Integer的键。该值通常用于指定助记符。例如:myAction.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_A)将myAction的助记符设置为'a',而myAction.putValue(Action.MNEMONIC_KEY, KeyEvent.getExtendedKeyCodeForChar('ф'))将myAction的助记符设置为西里尔字母“Ef”。- 自从:
- 1.3
- 参见:
-
SELECTED_KEY
用于存储与所选状态对应的Boolean的密钥。这通常仅用于具有有意义的选择状态的组件。例如,JRadioButton和JCheckBox使用它,但JMenu的实例不使用。此属性与其他属性的不同之处在于它既由组件读取又由组件设置。例如,如果
Action连接到JCheckBox,则JCheckBox的选定状态将从Action的状态设置。如果用户点击了JCheckBox的JCheckBox的选中状态andAction将两个都被更新。注意:此字段的值以“Swing”为前缀,以避免与现有
Actions可能发生冲突。- 自从:
- 1.6
- 参见:
-
DISPLAYED_MNEMONIC_INDEX_KEY
用于存储Integer的键对应于文本中的索引(由NAME属性标识),助记符的装饰应该呈现在该处。如果该属性的值大于或等于文本的长度,则将其视为-1。注意:此字段的值以“Swing”为前缀,以避免与现有
Actions可能发生冲突。- 自从:
- 1.6
- 参见:
-
LARGE_ICON_KEY
用于存储Icon的密钥。这通常由按钮使用,例如JButton和JToggleButton。如果相同的
Action用于菜单和按钮,您通常会同时指定SMALL_ICON和LARGE_ICON_KEY。菜单将使用SMALL_ICON和按钮LARGE_ICON_KEY。注意:此字段的值以“Swing”为前缀,以避免与现有
Actions可能发生冲突。- 自从:
- 1.6
- 参见:
-
-
方法详情
-
getValue
使用关联的键获取此对象的属性之一。- 参数:
key- 包含密钥的String- 返回:
Object值- 参见:
-
putValue
使用关联的键设置此对象的属性之一。如果该值已更改,则会将PropertyChangeEvent发送给监听器。- 参数:
key- 包含密钥的Stringvalue- 一个Object值
-
setEnabled
void setEnabled(boolean b) 设置Action的启用状态。启用后,与此对象关联的任何组件都处于活动状态,并且能够触发此对象的actionPerformed方法。如果该值已更改,则会将PropertyChangeEvent发送给监听器。- 参数:
b- true 启用此Action,false 禁用它- 参见:
-
isEnabled
boolean isEnabled()返回Action的启用状态。启用后,与此对象关联的任何组件都处于活动状态,并且能够触发此对象的actionPerformed方法。- 返回:
-
如果此
Action已启用,则为真 - 参见:
-
accept
确定是否应使用指定的发件人对象执行操作。sender可以是null。如果该操作被禁用,该方法必须返回 false。- 参数:
sender- 要检查的对象,可以为 null- 返回:
true如果应使用发送者对象执行操作,则在禁用操作时必须为 false。- 参见:
-
addPropertyChangeListener
添加一个PropertyChange监听器。容器和附加组件使用这些方法来注册对此Action对象的兴趣。当其启用状态或其他属性发生变化时,已注册的监听器会收到有关更改的通知。- 参数:
listener- 一个PropertyChangeListener对象
-
removePropertyChangeListener
删除PropertyChange监听器。- 参数:
listener- 一个PropertyChangeListener对象- 参见:
-