模块 java.desktop

接口 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 组件都有一个 Action 属性。在组件上设置 Action 时,会发生以下情况:

  • Action 作为 ActionListener 添加到组件中。
  • 该组件配置其某些属性以匹配 Action
  • 该组件在 Action 上安装了一个 PropertyChangeListener,以便该组件可以更改其属性以反映 Action 的属性更改。

下表描述了支持 ActionsSwing 组件使用的属性。在表中,button 指的是任何 AbstractButton 子类,其中不仅包括 JButton,还包括 JMenuItem 等类。除非另有说明,否则 Action(或 Actionnull)中的 null 属性值会导致按钮的相应属性设置为 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 的工具栏按钮很有用。如果 ActionLARGE_ICON_KEYSMALL_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 JCheckBoxJToggleButtonJRadioButton 之外的所有按钮。 LARGE_ICON_KEYSMALL_ICON JMenuItem 子类仅使用 SMALL_ICON 。所有其他按钮将使用 LARGE_ICON_KEY ;如果值为 null 他们使用 SMALL_ICON
accelerator 所有 JMenuItem 子类,JMenu 除外。 ACCELERATOR_KEY  
selected JToggleButtonJCheckBoxJRadioButtonJCheckBoxMenuItemJRadioButtonMenuItem SELECTED_KEY 尊重此属性的组件仅在它是 non-null 时才使用该值。例如,如果您在 JToggleButton 上为 SELECTED_KEY 设置了一个具有 null 值的 Action,则 JToggleButton 将不会以任何方式更新它的选定状态。类似地,只要 JToggleButton 的选定状态发生变化,它只会在 Action 具有 SELECTED_KEYnon-null 值的情况下将值设置回 Action
遵循此属性的组件会使其选定状态与此属性保持同步。当同一个 Action 与多个组件一起使用时,所有组件都会将其选定状态与此属性保持同步。互斥按钮,例如 ButtonGroup 中的 JToggleButton s,强制仅选择其中一个按钮。因此,不要使用为多个互斥按钮定义 SELECTED_KEY 属性值的相同 Action

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

Action 使用 PropertyChangeListener 通知听众 Action 已更改。 beans 规范表明 null 属性名称可用于指示多个值已更改。默认情况下,采用 Action 的 Swing 组件不处理此类更改。要指示 Swing 应根据 beans 规范处理 null,请将系统属性 swing.actions.reconfigureOnNull 设置为 Stringtrue

自从:
1.2
参见:
  • 字段详细信息

    • DEFAULT

      static final String  DEFAULT
      当前未使用。
      参见:
    • NAME

      static final String  NAME
      用于存储操作名称的键,用于菜单或按钮。
      参见:
    • 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 的密钥,当 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',而myAction.putValue(Action.MNEMONIC_KEY, KeyEvent.getExtendedKeyCodeForChar('ф'))myAction的助记符设置为西里尔字母“Ef”。
      自从:
      1.3
      参见:
    • SELECTED_KEY

      static final String  SELECTED_KEY
      用于存储与所选状态对应的 Boolean 的密钥。这通常仅用于具有有意义的选择状态的组件。例如,JRadioButtonJCheckBox 使用它,但 JMenu 的实例不使用。

      此属性与其他属性的不同之处在于它既由组件读取又由组件设置。例如,如果 Action 连接到 JCheckBox,则 JCheckBox 的选定状态将从 Action 的状态设置。如果用户点击了JCheckBoxJCheckBox的选中状态andAction两个都被更新。

      注意:此字段的值以“Swing”为前缀,以避免与现有 Actions 可能发生冲突。

      自从:
      1.6
      参见:
    • DISPLAYED_MNEMONIC_INDEX_KEY

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

      注意:此字段的值以“Swing”为前缀,以避免与现有 Actions 可能发生冲突。

      自从:
      1.6
      参见:
    • LARGE_ICON_KEY

      static final String  LARGE_ICON_KEY
      用于存储 Icon 的密钥。这通常由按钮使用,例如 JButtonJToggleButton

      如果相同的 Action 用于菜单和按钮,您通常会同时指定 SMALL_ICONLARGE_ICON_KEY。菜单将使用 SMALL_ICON 和按钮 LARGE_ICON_KEY

      注意:此字段的值以“Swing”为前缀,以避免与现有 Actions 可能发生冲突。

      自从:
      1.6
      参见:
  • 方法详情

    • getValue

      Object  getValue(String  key)
      使用关联的键获取此对象的属性之一。
      参数:
      key - 包含密钥的 String
      返回:
      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 已启用,则为真
      参见:
    • accept

      default boolean accept(Object  sender)
      确定是否应使用指定的发件人对象执行操作。 sender 可以是 null。如果该操作被禁用,该方法必须返回 false。
      参数:
      sender - 要检查的对象,可以为 null
      返回:
      true 如果应使用发送者对象执行操作,则在禁用操作时必须为 false。
      参见:
    • addPropertyChangeListener

      void addPropertyChangeListener(PropertyChangeListener  listener)
      添加一个 PropertyChange 监听器。容器和附加组件使用这些方法来注册对此 Action 对象的兴趣。当其启用状态或其他属性发生变化时,已注册的监听器会收到有关更改的通知。
      参数:
      listener - 一个 PropertyChangeListener 对象
    • removePropertyChangeListener

      void removePropertyChangeListener(PropertyChangeListener  listener)
      删除 PropertyChange 监听器。
      参数:
      listener - 一个 PropertyChangeListener 对象
      参见: