JavaTM Platform
Standard Ed. 6

javax.swing
接口 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 接口的一个有用扩展,以便若干控件访问相同的功能。

除了 ActionListener 接口定义的 actionPerformed 方法之外,此接口还允许应用程序在一个位置定义:

可以将此接口添加到现有类中,或者用它创建一个适配器(通常通过子类化 AbstractAction 来实现)。然后可以将 Action 对象添加到多个可感知 Action 的容器中,并连接到可容纳 Action 的组件。然后可以通过调用 Action 对象的 setEnabled 方法立刻激活或取消激活 GUI 控件。

注意,Action 实现在存储方面的开销比典型的 ActionListener 要高,但后者不具有集中控制功能和广播属性更改的优点。因此,应该注意只在需要这些优点的地方使用 Action,在别处使用 ActionListener 即可。

支持 Action 的 Swing 组件

许多 Swing 的组件都具有 Action 属性。在组件上设置 Action 时,会发生以下几种情况:

下表描述了支持 ActionSwing 组件所使用的属性。在该表中,按钮 指的是任何 AbstractButton 子类,它不仅包括 JButton,而且包括一些类(如 JMenuItem)。除非另行声明,否则 Action 中的 null 属性值(或者为 nullAction)将导致按钮的对应属性被设置为 null

组件属性 组件 动作键 注意事项
enabled 所有 isEnabled 方法  
toolTipText 所有 SHORT_DESCRIPTION  
actionCommand 所有 ACTION_COMMAND_KEY  
mnemonic 所有按钮 MNEMONIC_KEY null 值或 Action 将导致按钮的 mnemonic 属性被设置为 '\0'
text 所有按钮 NAME 如果不想按钮的文本反映 Action 的文本,可以将 hideActionText 属性设置为 true。如果 hideActionTexttrue,那么设置 Action 会将按钮的文本更改为 null,忽略对 NAME 的任何更改。hideActionText 对于通常仅显示 Icon 的工具栏按钮很有用。如果对于 LARGE_ICON_KEYSMALL_ICONAction 具有非 null 值,那么 JToolBar.add(Action) 会将属性设置为 true
displayedMnemonicIndex 所有按钮 DISPLAYED_MNEMONIC_INDEX_KEY 如果 DISPLAYED_MNEMONIC_INDEX_KEY 的值超出文本边界,则忽略它。当调用 setAction 时,如果取自 Action 的值为 null,则不更新显示的助记符索引。在对 DISPLAYED_MNEMONIC_INDEX_KEY 的任意后续更改中,null 被视为 -1。
icon JCheckBoxJToggleButtonJRadioButton 之外的所有按钮。 LARGE_ICON_KEYSMALL_ICON JMenuItem 子类只使用 SMALL_ICON。所有其他按钮将使用 LARGE_ICON_KEY;如果该值为 null,则它们使用 SMALL_ICON
accelerator JMenu 之外的所有 JMenuItem 子类。 ACCELERATOR_KEY  
selected JToggleButtonJCheckBoxJRadioButtonJCheckBoxMenuItemJRadioButtonMenuItem SELECTED_KEY 如果遵守此属性的组件为非 null,那么它只使用该值。例如,如果设置了一个 Action,它在 JToggleButton 上的 SELECTED_KEYnull 值,那么该 JToggleButton 将不会以任何方式更新其选定状态。类似地,如果对于 SELECTED_KEYAction 具有非 null 值,那么每次 JToggleButton 的选定状态发生更改时,它都会将值设置回 Action
遵守此属性的组件保持其选定状态与此属性同步。当将同一个 Action 用于多个组件时,所有组件都保持其选定状态与此属性同步。互斥的按钮(如 ButtonGroup 中的 JToggleButton)将强制选择其中的一个按钮。因此,在用于多个互斥按钮时,不要使用相同的 Action 定义 SELECTED_KEY 属性的值。

JPopupMenuJToolBarJMenu 都提供便捷方法来创建组件和在相应的组件上设置 Action。有关更多信息,请参阅这些类。

Action 使用 PropertyChangeListener 来通知侦听器 Action 发生了更改。bean 规范指示 null 属性名称可用于指示多个值发生了更改。默认情况下,带有 Action 的 Swing 组件不处理这样的更改。要指示 Swing 应该根据 bean 规范处理 null 情况,请将系统属性 swing.actions.reconfigureOnNull 设置为 Stringtrue

另请参见:
AbstractAction

字段摘要
static String ACCELERATOR_KEY
          用来存储将用作动作加速器的 KeyStroke 的键。
static String ACTION_COMMAND_KEY
          用来确定 ActionEvent 的命令 String 的键,ActionEvent 是在 Action 因驻留在与 JComponent 关联的 Keymap 中而被通知时所创建的。
static String DEFAULT
          当前未使用。
static String DISPLAYED_MNEMONIC_INDEX_KEY
          用来存储对应于文本(由 NAME 属性标识)索引的 Integer 值的键,助记符的装饰应在该文本中呈现。
static String LARGE_ICON_KEY
          用来存储 Icon 的键。
static String LONG_DESCRIPTION
          用来存储动作的较长 String 描述的键,用于上下文相关的帮助文件。
static String MNEMONIC_KEY
          用来存储对应于一个 KeyEvent 键代码的 Integer 值的键。
static String NAME
          用来存储动作的 String 名称的键,用于菜单或按钮。
static String SELECTED_KEY
          用来存储对应于选定状态的 Boolean 值的键。
static String SHORT_DESCRIPTION
          用来存储动作的简短 String 描述的键,用于工具提示文本。
static String SMALL_ICON
          用来存储小型 Icon(比如 ImageIcon)的键。
 
方法摘要
 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_ICONLARGE_ICON_KEY。菜单将使用 SMALL_ICON,按钮将使用 LARGE_ICON_KEY

另请参见:
常量字段值

ACTION_COMMAND_KEY

static final String ACTION_COMMAND_KEY
用来确定 ActionEvent 的命令 String 的键,ActionEvent 是在 Action 因驻留在与 JComponent 关联的 Keymap 中而被通知时所创建的。

另请参见:
常量字段值

ACCELERATOR_KEY

static final String ACCELERATOR_KEY
用来存储将用作动作加速器的 KeyStroke 的键。

从以下版本开始:
1.3
另请参见:
常量字段值

MNEMONIC_KEY

static final String MNEMONIC_KEY
用来存储对应于一个 KeyEvent 键代码的 Integer 值的键。该值通常用于指定助记符。例如:myAction.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_A)myAction 的助记符设置为 'a'。

从以下版本开始:
1.3
另请参见:
常量字段值

SELECTED_KEY

static final String SELECTED_KEY
用来存储对应于选定状态的 Boolean 值的键。该键通常只用于具有有意义的选择状态的组件。例如:JRadioButtonJCheckBox 使用此键,但是 JMenu 的实例不使用。

该属性不同于其他属性,因为它由组件读取也由组件设置。例如,如果 Action 连接到 JCheckBox,那么 JCheckBox 的选定状态将根据 Action 的选定状态设置。如果用户在 JCheckBox 上单击,JCheckBox 的选定状态 Action 将被更新。

注:此字段的值以 'Swing' 为前缀,以避免与现有 Action 的可能冲突。

从以下版本开始:
1.6
另请参见:
常量字段值

DISPLAYED_MNEMONIC_INDEX_KEY

static final String DISPLAYED_MNEMONIC_INDEX_KEY
用来存储对应于文本(由 NAME 属性标识)索引的 Integer 值的键,助记符的装饰应在该文本中呈现。如果此属性的值大于等于该文本的长度,则它将被视为 -1。

注:此字段的值以 'Swing' 为前缀,以避免与现有 Action 的可能冲突。

从以下版本开始:
1.6
另请参见:
AbstractButton.setDisplayedMnemonicIndex(int), 常量字段值

LARGE_ICON_KEY

static final String LARGE_ICON_KEY
用来存储 Icon 的键。该键通常由按钮(如 JButtonJToggleButton)使用。

如果将同一个 Action 用于菜单和按钮,通常应同时指定 SMALL_ICONLARGE_ICON_KEY。菜单将使用 SMALL_ICON,按钮将使用 LARGE_ICON_KEY

注:此字段的值以 'Swing' 为前缀,以避免与现有 Action 的可能冲突。

从以下版本开始:
1.6
另请参见:
常量字段值
方法详细信息

getValue

Object getValue(String key)
使用关联的键获取此对象的一个属性。

另请参见:
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 表示禁用它

isEnabled

boolean isEnabled()
返回 Action 的启用状态。在启用时,任何与此对象关联的组件都被激活,并且都能触发此对象的 actionPerformed 方法。

返回:
如果启用了此 Action,则返回 true

addPropertyChangeListener

void addPropertyChangeListener(PropertyChangeListener listener)
添加一个 PropertyChange 侦听器。容器和附属组件使用这些方法注册,以侦听此 Action 对象。当启用状态或其他属性发生更改时,已注册的侦听器会收到更改通知。

参数:
listener - 一个 PropertyChangeListener 对象

removePropertyChangeListener

void removePropertyChangeListener(PropertyChangeListener listener)
移除一个 PropertyChange 侦听器。

参数:
listener - 一个 PropertyChangeListener 对象
另请参见:
addPropertyChangeListener(java.beans.PropertyChangeListener)

JavaTM Platform
Standard Ed. 6

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策