javax.swing

接口
异常
所有超级接口:
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 时,会发生以下几种情况:

  • Action 被作为 ActionListener 添加到组件。
  • 组件配置自身的某些属性以匹配 Action
  • 组件在 Action 上安装 PropertyChangeListener,这样组件可更改其属性以反映 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)