- 所有超接口:
-
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
FieldsModifier 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侦听器。voidsetEnabled(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对象 - 参见:
-