- 所有超接口:
-
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控件。
请注意,与典型的ActionListener
相比,Action
实现在存储方面往往更昂贵,后者不提供功能的集中控制和属性更改的广播。因此,您应该谨慎使用Action
,只在需要其优点时使用,并在其他地方使用简单的ActionListener
。
支持Action
的Swing组件
许多Swing组件都具有Action
属性。当在组件上设置Action
时,会发生以下情况:
Action
被添加为组件的ActionListener
。- 组件配置一些属性以匹配
Action
。 - 组件在
Action
上安装一个PropertyChangeListener
,以便组件可以根据Action
的属性更改来更改其属性。
以下表格描述了支持Actions
的Swing
组件使用的属性。在表格中,“按钮”指的是任何AbstractButton
子类,不仅包括JButton
,还包括JMenuItem
等类。除非另有说明,在Action
中的null
属性值(或null
的Action
)会导致按钮的相应属性设置为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 的任何更改都将被忽略。对于通常只显示Icon 的工具栏按钮,hideActionText 很有用。JToolBar.add(Action) 如果Action 的LARGE_ICON_KEY 或SMALL_ICON 具有非null 值,则将属性设置为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 上设置具有null 值的SELECTED_KEY 的Action ,则JToggleButton 不会以任何方式更新其选定状态。类似地,每当JToggleButton 的选定状态更改时,只有在Action 的SELECTED_KEY 具有non-null 值时,它才会将值重新设置到Action 上。支持此属性的组件会将其选定状态与此属性保持同步。当相同的 Action 用于多个组件时,所有组件都会将其选定状态与此属性保持同步。互斥按钮,例如ButtonGroup 中的JToggleButton ,只会强制其中一个按钮被选中。因此,请勿将定义了SELECTED_KEY 属性值的相同Action 用于多个互斥按钮。 |
JPopupMenu
、JToolBar
和JMenu
都提供了用于创建组件并在相应组件上设置Action
的便捷方法。有关更多信息,请参考这些类。
Action
使用PropertyChangeListener
来通知侦听器Action
已更改。Beans规范指示可以使用null
属性名称来指示多个值已更改。默认情况下,接受Action
的Swing组件不处理此类更改。要指示Swing根据beans规范处理null
,请将系统属性swing.actions.reconfigureOnNull
设置为true
的String
值。
- 自版本:
- 1.2
- 参见:
-
Field Summary
Modifier and TypeFieldDescriptionstatic final String
用于存储KeyStroke
以用作操作加速器的键。static final String
用于确定ActionEvent
的命令String
的键,当Action
将作为与JComponent
关联的Keymap
中的结果通知时。static final String
目前未使用。static final String
用于存储与文本中的索引(由NAME
属性标识)对应的助记符装饰应该呈现的键。static final String
用于存储Icon
的键。static final String
用于存储操作的长String
描述,可用于上下文相关帮助。static final String
用于存储一个Integer
,对应于KeyEvent
键代码之一的键。static final String
用于存储操作的String
名称,用于菜单或按钮。static final String
用于存储与选定状态对应的Boolean
的键。static final String
用于存储操作的短String
描述,用于工具提示文本。static final String
用于存储小Icon
,例如ImageIcon
的键。 -
Method Summary
Modifier and TypeMethodDescriptiondefault boolean
确定是否应使用指定的发送方对象执行操作。void
添加一个PropertyChange
侦听器。使用关联的键获取此对象的一个属性。boolean
返回Action
的启用状态。void
使用关联的键设置此对象的一个属性。void
删除一个PropertyChange
侦听器。void
setEnabled
(boolean b) 设置Action
的启用状态。Methods declared in interface java.awt.event.ActionListener
actionPerformed
-
Field Details
-
DEFAULT
目前未使用。- 参见:
-
NAME
用于存储操作的String
名称,用于菜单或按钮的键。- 参见:
-
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
用于确定在与JComponent
关联的Keymap
中驻留的Action
将被通知为ActionEvent
的命令String
的键。- 参见:
-
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
的选定状态和Action
的选定状态都将被更新。注意:此字段的值以'Swing'为前缀,以避免与现有
Actions
可能发生的冲突。- 自:
- 1.6
- 参见:
-
DISPLAYED_MNEMONIC_INDEX_KEY
用于存储与文本中的索引(由NAME
属性标识)对应的助记符装饰应该呈现的位置的Integer
的键。如果此属性的值大于或等于文本的长度,则将其视为-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
- 参见:
-
-
Method Details
-
getValue
使用相关键获取此对象的属性之一。- 参数:
-
key
- 包含键的String
- 返回:
-
Object
值 - 参见:
-
putValue
使用相关键设置此对象的属性之一。如果值已更改,则向侦听器发送PropertyChangeEvent
。- 参数:
-
key
- 包含键的String
-
value
- 一个Object
值
-
setEnabled
void setEnabled(boolean b) 设置Action
的启用状态。启用时,与此对象关联的任何组件都是活动的,并且能够触发此对象的actionPerformed
方法。如果值已更改,则向侦听器发送PropertyChangeEvent
。- 参数:
-
b
- true表示启用此Action
,false表示禁用它 - 参见:
-
isEnabled
boolean isEnabled()返回Action
的启用状态。启用时,与此对象关联的任何组件都是活动的,并且能够触发此对象的actionPerformed
方法。- 返回:
-
如果此
Action
已启用,则为true - 参见:
-
accept
确定是否应使用指定的发送方对象执行操作。sender
可以为null
。如果操作已禁用,则该方法必须返回false。- 参数:
-
sender
- 要检查的对象,可以为null - 返回:
-
如果应使用发送方对象执行操作,则为
true
,如果操作已禁用,则必须为false。 - 参见:
-
addPropertyChangeListener
添加一个PropertyChange
监听器。容器和附加组件使用这些方法来注册对此Action
对象的兴趣。当其启用状态或其他属性更改时,注册的侦听器将被通知更改。- 参数:
-
listener
- 一个PropertyChangeListener
对象
-
removePropertyChangeListener
移除一个PropertyChange
监听器。- 参数:
-
listener
- 一个PropertyChangeListener
对象 - 参见:
-