JavaTM 2 Platform
Standard Ed. 6

java.awt
類別 DefaultKeyboardFocusManager

java.lang.Object
  繼承者 java.awt.KeyboardFocusManager
      繼承者 java.awt.DefaultKeyboardFocusManager
所有已實作的介面:
KeyEventDispatcher, KeyEventPostProcessor
直接已知子類別:
FocusManager

public class DefaultKeyboardFocusManager
extends KeyboardFocusManager

AWT 應用程序的預設 KeyboardFocusManager。通過進行焦點遍歷來回應 Component 的焦點遍歷鍵,並使用 Container 的 FocusTraversalPolicy。

有關更多資訊,請參閱 The Java Tutorial 中的 How to Use the Focus Subsystem 一節以及 Focus Specification

從以下版本開始:
1.4
另請參見:
FocusTraversalPolicy, Component.setFocusTraversalKeys(int, java.util.Set), Component.getFocusTraversalKeys(int)

欄位摘要
 
從類別 java.awt.KeyboardFocusManager 繼承的欄位
BACKWARD_TRAVERSAL_KEYS, DOWN_CYCLE_TRAVERSAL_KEYS, FORWARD_TRAVERSAL_KEYS, UP_CYCLE_TRAVERSAL_KEYS
 
建構子摘要
DefaultKeyboardFocusManager()
           
 
方法摘要
protected  void dequeueKeyEvents(long after, Component untilFocused)
          釋放正常指派到當前焦點所有者的所有 KeyEvent,這些 KeyEvent 因為調用了具有相同時間戳和 Component 的 enqueueKeyEvents 而被加入佇列。
protected  void discardKeyEvents(Component comp)
          放棄因為一次或多次調用具有指定 Component 或其子代之一的 enqueueKeyEvents 而加入佇列的所有 KeyEvent。
 boolean dispatchEvent(AWTEvent e)
          此方法由 AWT 事件排程程序調用,該排程程序請求當前的 KeyboardFocusManager 以它的名義指派指定的事件。
 boolean dispatchKeyEvent(KeyEvent e)
          如果排程程序鏈中其他 KeyEventDispatcher 都沒有排程 KeyEvent,或者沒有註冊其他 KeyEventDispatcher,則由 dispatchEvent 調用此方法。
 void downFocusCycle(Container aContainer)
          將焦點下移一個焦點遍歷循環。
protected  void enqueueKeyEvents(long after, Component untilFocused)
          延遲對 KeyEvent 的指派,直到指定的 Component 成為焦點所有者。
 void focusNextComponent(Component aComponent)
          使 aComponent 後面的 Component 擁有焦點,通常基於 FocusTraversalPolicy。
 void focusPreviousComponent(Component aComponent)
          使 aComponent 前面的 Component 擁有焦點,通常基於 FocusTraversalPolicy。
 boolean postProcessKeyEvent(KeyEvent e)
          由 dispatchKeyEvent 調用此方法。
 void processKeyEvent(Component focusedComponent, KeyEvent e)
          當且僅當該 KeyEvent 表示指定 focusedComponent 的焦點遍歷鍵時,此方法才會啟動一個焦點遍歷操作。
 void upFocusCycle(Component aComponent)
          將焦點上移一個焦點遍歷循環。
 
從類別 java.awt.KeyboardFocusManager 繼承的方法
addKeyEventDispatcher, addKeyEventPostProcessor, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, addVetoableChangeListener, clearGlobalFocusOwner, downFocusCycle, firePropertyChange, fireVetoableChange, focusNextComponent, focusPreviousComponent, getActiveWindow, getCurrentFocusCycleRoot, getCurrentKeyboardFocusManager, getDefaultFocusTraversalKeys, getDefaultFocusTraversalPolicy, getFocusedWindow, getFocusOwner, getGlobalActiveWindow, getGlobalCurrentFocusCycleRoot, getGlobalFocusedWindow, getGlobalFocusOwner, getGlobalPermanentFocusOwner, getKeyEventDispatchers, getKeyEventPostProcessors, getPermanentFocusOwner, getPropertyChangeListeners, getPropertyChangeListeners, getVetoableChangeListeners, getVetoableChangeListeners, redispatchEvent, removeKeyEventDispatcher, removeKeyEventPostProcessor, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, removeVetoableChangeListener, setCurrentKeyboardFocusManager, setDefaultFocusTraversalKeys, setDefaultFocusTraversalPolicy, setGlobalActiveWindow, setGlobalCurrentFocusCycleRoot, setGlobalFocusedWindow, setGlobalFocusOwner, setGlobalPermanentFocusOwner, upFocusCycle
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

建構子詳細資訊

DefaultKeyboardFocusManager

public DefaultKeyboardFocusManager()
方法詳細資訊

dispatchEvent

public boolean dispatchEvent(AWTEvent e)
此方法由 AWT 事件排程程序調用,該排程程序請求當前的 KeyboardFocusManager 以它的名義指派指定的事件。DefaultKeyboardFocusManagers 指派所有 FocusEvents、所有與焦點有關的 WindowEvents 和所有 KeyEvents。根據 KeyboardFocusManager 的焦點所有者、聚焦的視窗和活動視窗的概念來指派這些事件,有時需要覆寫指定 AWTEvent 的源程式碼。如果此方法返回 false,則 AWT 事件排程程序會試著指派事件本身。

指定者:
類別 KeyboardFocusManager 中的 dispatchEvent
參數:
e - 要指派的 AWTEvent
返回:
如果此方法指派了事件,則返回 true;否則返回 false
另請參見:
KeyboardFocusManager.redispatchEvent(java.awt.Component, java.awt.AWTEvent), KeyboardFocusManager.dispatchKeyEvent(java.awt.event.KeyEvent)

dispatchKeyEvent

public boolean dispatchKeyEvent(KeyEvent e)
如果排程程序鏈中其他 KeyEventDispatcher 都沒有排程 KeyEvent,或者沒有註冊其他 KeyEventDispatcher,則由 dispatchEvent 調用此方法。如果沒有使用該事件,而是啟用了它的目標,且焦點所有者不為 null,則此方法會將該事件指派到它的目標。此方法隨後會將該事件指派到所有已註冊的 KeyEventPostProcessor。完成所有這些操作之後,會將該事件傳遞給 KeyEventPostProcessor 的同位體進行處理。

在所有情況下,此方法都將返回 true,這是因為設計了 DefaultKeyboardFocusManager,因此,在任何情況下,dispatchEvent 和 AWT 事件排程程序都不應該對該事件執行進一步的操作。

指定者:
介面 KeyEventDispatcher 中的 dispatchKeyEvent
指定者:
類別 KeyboardFocusManager 中的 dispatchKeyEvent
參數:
e - 要指派的 KeyEvent
返回:
true
另請參見:
Component.dispatchEvent(java.awt.AWTEvent)

postProcessKeyEvent

public boolean postProcessKeyEvent(KeyEvent e)
dispatchKeyEvent 調用此方法。它將處理所有未使用的、映射到 AWT MenuShortcut 的 KeyEvent,這是通過使用該事件並啟動快捷方式來實作的。

指定者:
介面 KeyEventPostProcessor 中的 postProcessKeyEvent
指定者:
類別 KeyboardFocusManager 中的 postProcessKeyEvent
參數:
e - 要進行後處理的 KeyEvent
返回:
true
另請參見:
dispatchKeyEvent(java.awt.event.KeyEvent), MenuShortcut

processKeyEvent

public void processKeyEvent(Component focusedComponent,
                            KeyEvent e)
當且僅當該 KeyEvent 表示指定 focusedComponent 的焦點遍歷鍵時,此方法才會啟動一個焦點遍歷操作。期望 focusedComponent 就是當前的焦點所有者,雖然事實不必如此。如果事實並非如此,則仍然要進行焦點遍歷,就像 focusedComponent 是焦點所有者一樣。

指定者:
類別 KeyboardFocusManager 中的 processKeyEvent
參數:
focusedComponent - 作為焦點遍歷操作的基礎的 Component,如果指定事件表示 Component 的焦點遍歷鍵,則執行焦點遍歷操作
e - 可以表示焦點遍歷鍵的事件

enqueueKeyEvents

protected void enqueueKeyEvents(long after,
                                Component untilFocused)
延遲對 KeyEvent 的指派,直到指定的 Component 成為焦點所有者。將時間戳遲於指定時間戳的 KeyEvent 加入佇列,直到指定的 Component 接收一個 FOCUS_GAINED 事件,或者 AWT 通過調用 dequeueKeyEventsdiscardKeyEvents 取消延遲請求。

指定者:
類別 KeyboardFocusManager 中的 enqueueKeyEvents
參數:
after - 當前事件的時間戳,如果當前事件沒有時間戳,或 AWT 無法確定當前正在處理哪個事件,則此參數為當前系統時間
untilFocused - 將接收任何掛起 KeyEvent 之前的 FOCUS_GAINED 事件的 Component
另請參見:
dequeueKeyEvents(long, java.awt.Component), discardKeyEvents(java.awt.Component)

dequeueKeyEvents

protected void dequeueKeyEvents(long after,
                                Component untilFocused)
釋放正常指派到當前焦點所有者的所有 KeyEvent,這些 KeyEvent 因為調用了具有相同時間戳和 Component 的 enqueueKeyEvents 而被加入佇列。如果給定的時間戳小於零,那麼對於具有最早的時間戳(如果有)的給定 Component,應該取消未完成的入隊請求。

指定者:
類別 KeyboardFocusManager 中的 dequeueKeyEvents
參數:
after - 調用 enqueueKeyEvents 期間指定的時間戳,或為小於零的任意值
untilFocused - 調用 enqueueKeyEvents 期間指定的 Component
另請參見:
enqueueKeyEvents(long, java.awt.Component), discardKeyEvents(java.awt.Component)

discardKeyEvents

protected void discardKeyEvents(Component comp)
放棄因為一次或多次調用具有指定 Component 或其子代之一的 enqueueKeyEvents 而加入佇列的所有 KeyEvent。

指定者:
類別 KeyboardFocusManager 中的 discardKeyEvents
參數:
comp - 一次或多次調用 enqueueKeyEvents 期間指定的 Component,或這樣一個 Component 的父元件
另請參見:
enqueueKeyEvents(long, java.awt.Component), dequeueKeyEvents(long, java.awt.Component)

focusPreviousComponent

public void focusPreviousComponent(Component aComponent)
使 aComponent 前面的 Component 擁有焦點,通常基於 FocusTraversalPolicy。

指定者:
類別 KeyboardFocusManager 中的 focusPreviousComponent
參數:
aComponent - 作為焦點遍歷操作的基礎的 Component
另請參見:
FocusTraversalPolicy, Component.transferFocusBackward()

focusNextComponent

public void focusNextComponent(Component aComponent)
使 aComponent 後面的 Component 擁有焦點,通常基於 FocusTraversalPolicy。

指定者:
類別 KeyboardFocusManager 中的 focusNextComponent
參數:
aComponent - 作為焦點遍歷操作的基礎的 Component
另請參見:
FocusTraversalPolicy, Component.transferFocus()

upFocusCycle

public void upFocusCycle(Component aComponent)
將焦點上移一個焦點遍歷循環。通常,將焦點所有者設置為 aComponent 的焦點循環根,將當前的焦點循環根設置為新焦點所有者的焦點循環根。但是,如果 aComponent 的焦點循環根是一個 Window,則將焦點所有者設置為焦點循環根預設擁有焦點的 Component,當前的焦點循環根不變。

指定者:
類別 KeyboardFocusManager 中的 upFocusCycle
參數:
aComponent - 作為焦點遍歷操作的基礎的 Component
另請參見:
Component.transferFocusUpCycle()

downFocusCycle

public void downFocusCycle(Container aContainer)
將焦點下移一個焦點遍歷循環。如果 aContainer 是一個焦點循環根,則將焦點所有者設置為 aContainer 預設擁有焦點的 Component,並將當前的焦點循環根設置為 aContainer。如果 aContainer 不是一個焦點循環根,則不發生焦點遍歷操作。

指定者:
類別 KeyboardFocusManager 中的 downFocusCycle
參數:
aContainer - 作為焦點遍歷操作的基礎的 Component
另請參見:
Container.transferFocusDownCycle()

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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