JavaTM 2 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 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only