JavaTM 2 Platform
Standard Ed. 6

java.awt
類別 KeyboardFocusManager

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

public abstract class KeyboardFocusManager
extends Object
implements KeyEventDispatcher, KeyEventPostProcessor

KeyboardFocusManager 負責管理啟動狀態的聚焦 Window 和當前焦點所有者。焦點所有者的定義是:應用程序中的 Component,通常接收使用者產生的所有 KeyEvent。聚焦 Window 指本身就是(或者包含)焦點所有者的 Window。只有 Frame 或 Dialog 才能成為活動 Window。本機的視窗作業系統可能使用特殊裝飾(如高亮顯示標題欄)來表示活動 Window 或其子視窗。活動 Window 要麼是聚焦 Window,要麼是作為聚焦 Window 所有者的第一個 Frame 或 Dialog。

KeyboardFocusManager 既是一個用於查詢焦點所有者並啟動焦點更改的客戶端程式碼的集中位置,同時又是一個用於所有 FocusEvent、與焦點相關的 WindowEvent 和 KeyEvent 的排程程序。

有些瀏覽器將使用不同程式碼進制的 applet 劃分為單獨的上下文,並在這些上下文之間建牆分隔。在此方案中,每個上下文都將具有一個 KeyboardFocusManager。其他瀏覽器將所有 applet 置於同一個上下文中,這意味著僅存在一個用於所有 applet 的全體 KeyboardFocusManager。此行為是依賴於實作的。請參考瀏覽器文檔以獲取更多資訊。然而,不管可能有多少上下文,每個 ClassLoader 的焦點所有者、聚焦 Window 或活動 Window 只能有一個。

請參見 How to Use the Focus SubsystemThe Java Tutorial 的一節)和 Focus Specification 以獲取更多資訊。

從以下版本開始:
1.4
另請參見:
Window, Frame, Dialog, FocusEvent, WindowEvent, KeyEvent

欄位摘要
static int BACKWARD_TRAVERSAL_KEYS
          Backward 焦點遍歷鍵的標識符。
static int DOWN_CYCLE_TRAVERSAL_KEYS
          Down Cycle 焦點遍歷鍵的標識符。
static int FORWARD_TRAVERSAL_KEYS
          Forward 焦點遍歷鍵的標識符。
static int UP_CYCLE_TRAVERSAL_KEYS
          Up Cycle 焦點遍歷鍵的標識符。
 
建構子摘要
KeyboardFocusManager()
          初始化 KeyboardFocusManager。
 
方法摘要
 void addKeyEventDispatcher(KeyEventDispatcher dispatcher)
          將 KeyEventDispatcher 添加到此 KeyboardFocusManager 的排程程序鏈中。
 void addKeyEventPostProcessor(KeyEventPostProcessor processor)
          將 KeyEventPostProcessor 添加到此 KeyboardFocusManager 的後處理器鏈中。
 void addPropertyChangeListener(PropertyChangeListener listener)
          將 PropertyChangeListener 添加到偵聽器列表。
 void addPropertyChangeListener(String propertyName, PropertyChangeListener listener)
          將 PropertyChangeListener 添加到特定屬性的偵聽器列表。
 void addVetoableChangeListener(String propertyName, VetoableChangeListener listener)
          將 VetoableChangeListener 添加到特定屬性的偵聽器列表。
 void addVetoableChangeListener(VetoableChangeListener listener)
          將 VetoableChangeListener 添加到偵聽器列表。
 void clearGlobalFocusOwner()
          在 Java 和本機級別清除全體焦點所有者。
protected abstract  void dequeueKeyEvents(long after, Component untilFocused)
          由 AWT 調用以通知 KeyboardFocusManager 應該取消延遲指派 KeyEvent。
protected abstract  void discardKeyEvents(Component comp)
          由 AWT 調用以通知 KeyboardFocusManager 應該取消延遲指派 KeyEvent。
abstract  boolean dispatchEvent(AWTEvent e)
          AWT 事件排程程序可以調用此方法,請求當前的 KeyboardFocusManager 為其指派指定的事件。
abstract  boolean dispatchKeyEvent(KeyEvent e)
          通常情況下,如果該指派程序鏈中的其他 KeyEventDispatcher 沒有指派 KeyEvent 或者沒有註冊其他 KeyEventDispatcher,則 dispatchEvent 將調用此方法。
 void downFocusCycle()
          當且僅當當前焦點所有者是一個作為焦點循環根的 Container 時,從當前焦點所有者將焦點下移一個焦點遍歷循環。
abstract  void downFocusCycle(Container aContainer)
          將焦點下移一個焦點遍歷循環。
protected abstract  void enqueueKeyEvents(long after, Component untilFocused)
          在指定的 Component 成為焦點所有者以前由 AWT 調用,以通知 KeyboardFocusManager 延遲指派 KeyEvent。
protected  void firePropertyChange(String propertyName, Object oldValue, Object newValue)
          觸發 PropertyChangeEvent 以回應綁定屬性中的更改。
protected  void fireVetoableChange(String propertyName, Object oldValue, Object newValue)
          觸發 PropertyChangeEvent 以回應可否決屬性中的更改。
 void focusNextComponent()
          聚焦當前焦點所有者之後的 Component。
abstract  void focusNextComponent(Component aComponent)
          聚焦 aComponent 之後的 Component,通常基於 FocusTraversalPolicy。
 void focusPreviousComponent()
          聚焦當前焦點所有者之前的 Component。
abstract  void focusPreviousComponent(Component aComponent)
          聚焦 aComponent 之前的 Component,通常基於 FocusTraversalPolicy。
 Window getActiveWindow()
          如果活動 Window 與調用執行緒位於同一個上下文中,則返回活動 Window。
 Container getCurrentFocusCycleRoot()
          如果當前焦點循環根與調用執行緒位於相同的上下文中,則返回當前焦點循環根。
static KeyboardFocusManager getCurrentKeyboardFocusManager()
          返回調用執行緒上下文的當前 KeyboardFocusManager 實例。
 Set<AWTKeyStroke> getDefaultFocusTraversalKeys(int id)
          返回給定遍歷操作的預設焦點遍歷鍵的 Set。
 FocusTraversalPolicy getDefaultFocusTraversalPolicy()
          返回預設 FocusTraversalPolicy。
 Window getFocusedWindow()
          如果聚焦視窗與調用執行緒位於同一個上下文中,則返回聚焦視窗。
 Component getFocusOwner()
          如果焦點所有者與調用執行緒位於同一個上下文中,則返回該焦點所有者。
protected  Window getGlobalActiveWindow()
          返回活動 Window,即使調用執行緒處於活動 Window 之外的上下文中。
protected  Container getGlobalCurrentFocusCycleRoot()
          返回當前焦點循環根,即使調用執行緒處於當前焦點循環根之外的上下文中。
protected  Window getGlobalFocusedWindow()
          返回聚焦 Window,即使調用執行緒處於聚焦 Window 之外的上下文中。
protected  Component getGlobalFocusOwner()
          返回焦點所有者,即使調用執行緒處於焦點所有者之外的上下文中。
protected  Component getGlobalPermanentFocusOwner()
          返回持久焦點所有者,即使調用執行緒處於該持久焦點所有者之外的上下文中。
protected  List<KeyEventDispatcher> getKeyEventDispatchers()
          作為 List 返回此 KeyboardFocusManager 的 KeyEventDispatcher 鏈。
protected  List<KeyEventPostProcessor> getKeyEventPostProcessors()
          作為 List 返回此 KeyboardFocusManager 的 KeyEventPostProcessor 鏈。
 Component getPermanentFocusOwner()
          如果持久焦點所有者與調用執行緒位於同一個上下文中,則返回持久焦點所有者。
 PropertyChangeListener[] getPropertyChangeListeners()
          返回在此鍵盤焦點管理器上註冊的所有屬性更改偵聽器組成的陣列。
 PropertyChangeListener[] getPropertyChangeListeners(String propertyName)
          返回與指定屬性相關聯的所有 PropertyChangeListener 組成的陣列。
 VetoableChangeListener[] getVetoableChangeListeners()
          返回在此鍵盤焦點管理器上註冊的所有可否決更改偵聽器組成的陣列。
 VetoableChangeListener[] getVetoableChangeListeners(String propertyName)
          返回與指定屬性相關聯的所有 VetoableChangeListener 組成的陣列。
abstract  boolean postProcessKeyEvent(KeyEvent e)
          dispatchKeyEvent 將調用此方法。
abstract  void processKeyEvent(Component focusedComponent, KeyEvent e)
          當且僅當該 KeyEvent 表示指定 focusedComponent 的焦點遍歷鍵時,此方法啟動焦點遍歷操作。
 void redispatchEvent(Component target, AWTEvent e)
          重新指派 AWTEvent 的方式是,AWT 事件排程程序不會遞歸式請求 KeyboardFocusManager 或任何已安裝的 KeyEventDispatcher 再次指派該事件。
 void removeKeyEventDispatcher(KeyEventDispatcher dispatcher)
          移除以前添加到此 KeyboardFocusManager 排程程序鏈中的 KeyEventDispatcher。
 void removeKeyEventPostProcessor(KeyEventPostProcessor processor)
          從此 KeyboardFocusManager 的後處理器鏈中移除以前添加的 KeyEventPostProcessor。
 void removePropertyChangeListener(PropertyChangeListener listener)
          從偵聽器列表移除 PropertyChangeListener。
 void removePropertyChangeListener(String propertyName, PropertyChangeListener listener)
          從特定屬性的偵聽器列表移除 PropertyChangeListener。
 void removeVetoableChangeListener(String propertyName, VetoableChangeListener listener)
          從特定屬性的偵聽器列表移除 VetoableChangeListener。
 void removeVetoableChangeListener(VetoableChangeListener listener)
          從偵聽器列表移除 VetoableChangeListener。
static void setCurrentKeyboardFocusManager(KeyboardFocusManager newManager)
          設置調用執行緒上下文的當前 KeyboardFocusManager 實例。
 void setDefaultFocusTraversalKeys(int id, Set<? extends AWTKeyStroke> keystrokes)
          設置給定遍歷操作的預設焦點遍歷鍵。
 void setDefaultFocusTraversalPolicy(FocusTraversalPolicy defaultPolicy)
          設置預設 FocusTraversalPolicy。
protected  void setGlobalActiveWindow(Window activeWindow)
          設置活動 Window。
 void setGlobalCurrentFocusCycleRoot(Container newFocusCycleRoot)
          設置當前焦點循環根。
protected  void setGlobalFocusedWindow(Window focusedWindow)
          設置聚焦 Window。
protected  void setGlobalFocusOwner(Component focusOwner)
          設置焦點所有者。
protected  void setGlobalPermanentFocusOwner(Component permanentFocusOwner)
          設置持久焦點所有者。
 void upFocusCycle()
          從當前焦點所有者將焦點上移一個焦點遍歷循環。
abstract  void upFocusCycle(Component aComponent)
          將焦點上移一個焦點遍歷循環。
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

欄位詳細資訊

FORWARD_TRAVERSAL_KEYS

public static final int FORWARD_TRAVERSAL_KEYS
Forward 焦點遍歷鍵的標識符。

另請參見:
setDefaultFocusTraversalKeys(int, java.util.Set), getDefaultFocusTraversalKeys(int), Component.setFocusTraversalKeys(int, java.util.Set), Component.getFocusTraversalKeys(int), 常數欄位值

BACKWARD_TRAVERSAL_KEYS

public static final int BACKWARD_TRAVERSAL_KEYS
Backward 焦點遍歷鍵的標識符。

另請參見:
setDefaultFocusTraversalKeys(int, java.util.Set), getDefaultFocusTraversalKeys(int), Component.setFocusTraversalKeys(int, java.util.Set), Component.getFocusTraversalKeys(int), 常數欄位值

UP_CYCLE_TRAVERSAL_KEYS

public static final int UP_CYCLE_TRAVERSAL_KEYS
Up Cycle 焦點遍歷鍵的標識符。

另請參見:
setDefaultFocusTraversalKeys(int, java.util.Set), getDefaultFocusTraversalKeys(int), Component.setFocusTraversalKeys(int, java.util.Set), Component.getFocusTraversalKeys(int), 常數欄位值

DOWN_CYCLE_TRAVERSAL_KEYS

public static final int DOWN_CYCLE_TRAVERSAL_KEYS
Down Cycle 焦點遍歷鍵的標識符。

另請參見:
setDefaultFocusTraversalKeys(int, java.util.Set), getDefaultFocusTraversalKeys(int), Component.setFocusTraversalKeys(int, java.util.Set), Component.getFocusTraversalKeys(int), 常數欄位值
建構子詳細資訊

KeyboardFocusManager

public KeyboardFocusManager()
初始化 KeyboardFocusManager。

方法詳細資訊

getCurrentKeyboardFocusManager

public static KeyboardFocusManager getCurrentKeyboardFocusManager()
返回調用執行緒上下文的當前 KeyboardFocusManager 實例。

返回:
此執行緒上下文的 KeyboardFocusManager
另請參見:
setCurrentKeyboardFocusManager(java.awt.KeyboardFocusManager)

setCurrentKeyboardFocusManager

public static void setCurrentKeyboardFocusManager(KeyboardFocusManager newManager)
                                           throws SecurityException
設置調用執行緒上下文的當前 KeyboardFocusManager 實例。如果指定了 null,則使用 DefaultKeyboardFocusManager 的新實例替換當前 KeyboardFocusManager。

如果安裝了 SecurityManager,則必須授予調用執行緒 AWTPermission "replaceKeyboardFocusManager" 才能替換當前 KeyboardFocusManager。如果未授予該權限,則此方法將拋出 SecurityException,而當前的 KeyboardFocusManager 不會改變。

參數:
newManager - 此執行緒上下文的新 KeyboardFocusManager
拋出:
SecurityException - 如果調用執行緒不具有替換當前 KeyboardFocusManager 的權限
另請參見:
getCurrentKeyboardFocusManager(), DefaultKeyboardFocusManager

getFocusOwner

public Component getFocusOwner()
如果焦點所有者與調用執行緒位於同一個上下文中,則返回該焦點所有者。焦點所有者的定義是:應用程序中的 Component,通常使用者產生的所有 KeyEvent 都被接收。如果為焦點所有者啟用了焦點遍歷鍵,則不會傳遞映射到焦點所有者的焦點遍歷鍵的 KeyEvent。此外,KeyEventDispatcher 在到達焦點所有者之前可能重定向或使用 KeyEvent。

返回:
焦點所有者;如果焦點所有者調用的不是執行緒上下文的成員,則返回 null
另請參見:
getGlobalFocusOwner(), setGlobalFocusOwner(java.awt.Component)

getGlobalFocusOwner

protected Component getGlobalFocusOwner()
                                 throws SecurityException
返回焦點所有者,即使調用執行緒處於焦點所有者之外的上下文中。焦點所有者的定義是:應用程序中的 Component,通常接收使用者產生的所有 KeyEvent。如果為焦點所有者啟用了焦點遍歷鍵,則不會傳遞映射到焦點所有者的焦點遍歷鍵的 KeyEvent。此外,KeyEventDispatcher 在到達焦點所有者之前可能重定向或使用 KeyEvent。

如果此 KeyboardFocusManager 調用的不是執行緒上下文的當前 KeyboardFocusManager,則此方法將拋出 SecurityException。

返回:
焦點所有者
拋出:
SecurityException - 如果此 KeyboardFocusManager 調用的不是執行緒上下文的當前 KeyboardFocusManager
另請參見:
getFocusOwner(), setGlobalFocusOwner(java.awt.Component)

setGlobalFocusOwner

protected void setGlobalFocusOwner(Component focusOwner)
設置焦點所有者。如果該 Component 不可以作為焦點,則取消操作。焦點所有者的定義是:應用程序中的 Component,通常接收使用者產生的所有 KeyEvent。如果為焦點所有者啟用了焦點遍歷鍵,則不會傳遞映射到焦點所有者的焦點遍歷鍵的 KeyEvent。此外,KeyEventDispatcher 在到達焦點所有者之前可能重定向或使用 KeyEvent。

此方法實際上沒有將焦點設置為指定的 Component。它只存儲該值,以便以後由 getFocusOwner() 返回它。更改焦點所有者需要使用 Component.requestFocus()Component.requestFocusInWindow(),具體的使用因平臺而異。

參數:
focusOwner - 焦點所有者
另請參見:
getFocusOwner(), getGlobalFocusOwner(), Component.requestFocus(), Component.requestFocusInWindow(), Component.isFocusable()

clearGlobalFocusOwner

public void clearGlobalFocusOwner()
在 Java 和本機級別清除全體焦點所有者。如果存在焦點所有者,則該 Component 將接收持久 FOCUS_LOST 事件。完成此操作後,在使用者選擇接收焦點的新 Component 或通過調用 requestFocus() 為 Component 顯式分派焦點之前,本機視窗作業系統將放棄所有使用者產生的 KeyEvent。此操作不改變聚焦或啟動狀態的 Window。

另請參見:
Component.requestFocus(), FocusEvent.FOCUS_LOST

getPermanentFocusOwner

public Component getPermanentFocusOwner()
如果持久焦點所有者與調用執行緒位於同一個上下文中,則返回持久焦點所有者。持久焦點所有者的定義是:應用程序中的最後一個 Component,它可以接收持久 FOCUS_GAINED 事件。如果不發生臨時焦點更改,則焦點所有者和持久焦點所有者是等效的。在發生臨時焦點更改的情形下,臨時焦點更改結束後,持久焦點所有者又會變成焦點所有者。

返回:
持久焦點所有者;如果持久焦點所有者調用的不是執行緒上下文的成員,則返回 null
另請參見:
getGlobalPermanentFocusOwner(), setGlobalPermanentFocusOwner(java.awt.Component)

getGlobalPermanentFocusOwner

protected Component getGlobalPermanentFocusOwner()
                                          throws SecurityException
返回持久焦點所有者,即使調用執行緒處於該持久焦點所有者之外的上下文中。持久焦點所有者的定義是:應用程序中的最後一個 Component,它可以接收持久 FOCUS_GAINED 事件。如果不發生臨時焦點更改,則焦點所有者和持久焦點所有者是等效的。在發生臨時焦點更改的情形下,臨時焦點更改結束後,持久焦點所有者又會變成焦點所有者。

如果此 KeyboardFocusManager 調用的不是執行緒上下文的當前 KeyboardFocusManager,則此方法將拋出 SecurityException。

返回:
持久焦點所有者
拋出:
SecurityException - 如果此 KeyboardFocusManager 調用的不是執行緒上下文的當前 KeyboardFocusManager
另請參見:
getPermanentFocusOwner(), setGlobalPermanentFocusOwner(java.awt.Component)

setGlobalPermanentFocusOwner

protected void setGlobalPermanentFocusOwner(Component permanentFocusOwner)
設置持久焦點所有者。如果該 Component 不可以作為焦點,則取消該操作。持久焦點所有者的定義是:應用程序中的最後一個 Component,它可以接收持久 FOCUS_GAINED 事件。如果不發生臨時焦點更改,則焦點所有者和持久焦點所有者是等效的。在發生臨時焦點更改的情形下,臨時焦點更改結束後,持久焦點所有者又會變成焦點所有者。

此方法實際上沒有將焦點設置為指定的 Component。它只存儲該值,以便以後由 getPermanentFocusOwner() 返回它。更改焦點所有者需要使用 Component.requestFocus()Component.requestFocusInWindow(),因平臺而異。

參數:
permanentFocusOwner - 持久焦點所有者
另請參見:
getPermanentFocusOwner(), getGlobalPermanentFocusOwner(), Component.requestFocus(), Component.requestFocusInWindow(), Component.isFocusable()

getFocusedWindow

public Window getFocusedWindow()
如果聚焦視窗與調用執行緒位於同一個上下文中,則返回聚焦視窗。聚焦 Window 指本身就是(或者包含)焦點所有者的 Window。

返回:
聚焦 Window;如果聚焦 Window 調用的不是執行緒上下文的成員,則返回 null
另請參見:
getGlobalFocusedWindow(), setGlobalFocusedWindow(java.awt.Window)

getGlobalFocusedWindow

protected Window getGlobalFocusedWindow()
                                 throws SecurityException
返回聚焦 Window,即使調用執行緒處於聚焦 Window 之外的上下文中。聚焦 Window 指本身就是(或者包含)焦點所有者的 Window。

如果此 KeyboardFocusManager 調用的不是執行緒上下文的當前 KeyboardFocusManager,則此方法將拋出 SecurityException。

返回:
聚焦 Window
拋出:
SecurityException - 如果此 KeyboardFocusManager 調用的不是執行緒上下文的當前 KeyboardFocusManager
另請參見:
getFocusedWindow(), setGlobalFocusedWindow(java.awt.Window)

setGlobalFocusedWindow

protected void setGlobalFocusedWindow(Window focusedWindow)
設置聚焦 Window。聚焦 Window 指本身就是(或者包含)焦點所有者的 Window。如果要聚焦的指定 Window 不是可以作為焦點的 Window,則取消該操作。

此方法不能實際更改與本機視窗作業系統相關的聚焦 Window。它只存儲該值,以便以後由 getFocusedWindow() 返回它。更改聚焦 Window 需要使用 Component.requestFocus()Component.requestFocusInWindow(),因平臺而異。

參數:
focusedWindow - 聚焦 Window
另請參見:
getFocusedWindow(), getGlobalFocusedWindow(), Component.requestFocus(), Component.requestFocusInWindow(), Window.isFocusableWindow()

getActiveWindow

public Window getActiveWindow()
如果活動 Window 與調用執行緒位於同一個上下文中,則返回活動 Window。只有 Frame 或 Dialog 才能成為活動 Window。本機的視窗作業系統可能使用特殊裝飾(如高亮顯示標題欄)來表示活動 Window 或其子視窗。活動 Window 要麼是聚焦 Window,要麼是作為聚焦 Window 所有者的第一個 Frame 或 Dialog。

返回:
活動 Window;如果活動 Window 調用的不是執行緒上下文的成員,則返回 null
另請參見:
getGlobalActiveWindow(), setGlobalActiveWindow(java.awt.Window)

getGlobalActiveWindow

protected Window getGlobalActiveWindow()
                                throws SecurityException
返回活動 Window,即使調用執行緒處於活動 Window 之外的上下文中。只有 Frame 或 Dialog 才能成為活動 Window。本機的視窗作業系統可能使用特殊裝飾(如高亮顯示標題欄)來表示活動 Window。活動 Window 要麼是聚焦 Window,要麼是作為聚焦 Window 所有者的第一個 Frame 或 Dialog。

如果此 KeyboardFocusManager 調用的不是執行緒上下文的當前 KeyboardFocusManager,則此方法將拋出 SecurityException。

返回:
活動 Window
拋出:
SecurityException - 如果此 KeyboardFocusManager 調用的不是執行緒上下文的當前 KeyboardFocusManager
另請參見:
getActiveWindow(), setGlobalActiveWindow(java.awt.Window)

setGlobalActiveWindow

protected void setGlobalActiveWindow(Window activeWindow)
設置活動 Window。只有 Frame 或 Dialog 才能成為活動 Window。本機的視窗作業系統可能使用特殊裝飾(如高亮顯示標題欄)來表示活動 Window 或其子視窗。活動 Window 要麼是聚焦 Window,要麼是作為聚焦 Window 所有者的第一個 Frame 或 Dialog。

此方法不能實際更改與本機視窗作業系統相關的活動 Window。它只存儲該值,以便以後由 getActiveWindow() 返回它。更改活動 Window 需要使用 Component.requestFocus()Component.requestFocusInWindow(),因平臺而異。

參數:
activeWindow - 活動 Window
另請參見:
getActiveWindow(), getGlobalActiveWindow(), Component.requestFocus(), Component.requestFocusInWindow()

getDefaultFocusTraversalPolicy

public FocusTraversalPolicy getDefaultFocusTraversalPolicy()
返回預設 FocusTraversalPolicy。通過顯式調用 Container.setFocusTraversalPolicy 初始化自己的焦點遍歷策略時,頂層元件會使用該值。

返回:
預設 FocusTraversalPolicy。永遠不會返回 null。
另請參見:
setDefaultFocusTraversalPolicy(java.awt.FocusTraversalPolicy), Container.setFocusTraversalPolicy(java.awt.FocusTraversalPolicy), Container.getFocusTraversalPolicy()

setDefaultFocusTraversalPolicy

public void setDefaultFocusTraversalPolicy(FocusTraversalPolicy defaultPolicy)
設置預設 FocusTraversalPolicy。通過顯式調用 Container.setFocusTraversalPolicy 初始化自己的焦點遍歷策略時,頂層元件會使用此值。註:此調用不影響已經創建的元件,因為它們的策略已經初始化了。只有新元件才會將此策略用作預設策略。

參數:
defaultPolicy - 新的預設 FocusTraversalPolicy
拋出:
IllegalArgumentException - 如果 defaultPolicy 為 null
另請參見:
getDefaultFocusTraversalPolicy(), Container.setFocusTraversalPolicy(java.awt.FocusTraversalPolicy), Container.getFocusTraversalPolicy()

setDefaultFocusTraversalKeys

public void setDefaultFocusTraversalKeys(int id,
                                         Set<? extends AWTKeyStroke> keystrokes)
設置給定遍歷操作的預設焦點遍歷鍵。此遍歷鍵 Set 對沒有顯式定義自己的這種 Set 的所有 Window 均有效。對於沒有顯式定義自己的這種 SetWindows 而言,此 Set 還可以由其子 Component 遞歸式繼承。

預設焦點遍歷鍵的預設值是依賴於實作的。Sun 建議特定本機平臺的所有實作都使用相同的預設值。下面列出了對 Windows 和 Unix 的建議。這些建議用於 Sun AWT 實作中。

標識符 意義 預設值
KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS 正常向前鍵盤遍歷 TAB on KEY_PRESSED, CTRL-TAB on KEY_PRESSED
KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS 正常反向鍵盤遍歷 SHIFT-TAB on KEY_PRESSED, CTRL-SHIFT-TAB on KEY_PRESSED
KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS 向上一個焦點遍歷循環 none
KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS 向下一個焦點遍歷循環 none
要禁用遍歷鍵,需要使用空 Set;建議使用 Collections.EMPTY_SET

使用 AWTKeyStroke API,客戶端程式碼可以指定在兩個特定 KeyEvent 的哪一個上進行焦點遍歷,KEY_PRESSED 還是 KEY_RELEASED。不管指定哪一個 KeyEvent,所有與焦點遍歷鍵相關的 KeyEvent(包括關聯的 KEY_TYPED 事件)都將被使用,不會將其指派給任何 Component。將 KEY_TYPED 事件指定為映射為焦點遍歷操作或將同一事件映射為多個預設焦點遍歷操作都是運行時錯誤。

參數:
id - KeyboardFocusManager.FORWARD_TRAVERSAL_KEYSKeyboardFocusManager.BACKWARD_TRAVERSAL_KEYSKeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYSKeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS 其中之一
keystrokes - 指定操作的 AWTKeyStroke Set
拋出:
IllegalArgumentException - 如果 id 不是 KeyboardFocusManager.FORWARD_TRAVERSAL_KEYSKeyboardFocusManager.BACKWARD_TRAVERSAL_KEYSKeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYSKeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS 其中之一,或者擊鍵為 null,或者擊鍵包含 null,或者擊鍵中的任何 Object 不是 AWTKeyStroke,或者擊鍵表示 KEY_TYPED 事件,或者擊鍵已映射為別的預設焦點遍歷操作
另請參見:
getDefaultFocusTraversalKeys(int), Component.setFocusTraversalKeys(int, java.util.Set), Component.getFocusTraversalKeys(int)

getDefaultFocusTraversalKeys

public Set<AWTKeyStroke> getDefaultFocusTraversalKeys(int id)
返回給定遍歷操作的預設焦點遍歷鍵的 Set。此遍歷鍵 Set 對沒有顯式定義自己的這種 Set 的所有 Window 均有效。對於沒有顯式定義自己的這種 Set 的 Window 而言,此 Set 還可以由其子 Component 遞歸式繼承。(請參見 setDefaultFocusTraversalKeys 以獲取每個操作的完整描述。)

參數:
id - KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS、KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS、KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS 和 KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS 其中之一
返回:
指定操作的 AWTKeyStroke Set;該 Set 不可修改,並且可以為空;永遠不會返回 null
拋出:
IllegalArgumentException - 如果 id 不是 KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS、KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS、KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS 和 KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS 其中之一
另請參見:
setDefaultFocusTraversalKeys(int, java.util.Set), Component.setFocusTraversalKeys(int, java.util.Set), Component.getFocusTraversalKeys(int)

getCurrentFocusCycleRoot

public Container getCurrentFocusCycleRoot()
如果當前焦點循環根與調用執行緒位於相同的上下文中,則返回當前焦點循環根。如果焦點所有者本身是一個焦點循環根,則在正常焦點遍歷期間,哪些 Component 表示焦點的上一個和下一個 Component 可能不明確。在這種情況下,需要使用當前焦點循環根來區分各種可能性。

此方法僅供 KeyboardFocusManager 和焦點實作使用。一般客戶端不能使用。

返回:
當前焦點循環根;如果當前焦點循環根調用的不是執行緒上下文的成員,則返回 null
另請參見:
getGlobalCurrentFocusCycleRoot(), setGlobalCurrentFocusCycleRoot(java.awt.Container)

getGlobalCurrentFocusCycleRoot

protected Container getGlobalCurrentFocusCycleRoot()
                                            throws SecurityException
返回當前焦點循環根,即使調用執行緒處於當前焦點循環根之外的上下文中。如果焦點所有者本身是一個焦點循環根,則在正常焦點遍歷期間,哪些 Component 表示焦點的上一個和下一個 Component 可能不明確。在這種情況下,需要使用當前焦點循環根來區分各種可能性。

如果此 KeyboardFocusManager 調用的不是執行緒上下文的當前 KeyboardFocusManager,則此方法將拋出 SecurityException。

返回:
當前焦點循環根;如果當前焦點循環根調用的不是執行緒上下文的成員,則返回 null
拋出:
SecurityException - 如果此 KeyboardFocusManager 調用的不是執行緒上下文的當前 KeyboardFocusManager
另請參見:
getCurrentFocusCycleRoot(), setGlobalCurrentFocusCycleRoot(java.awt.Container)

setGlobalCurrentFocusCycleRoot

public void setGlobalCurrentFocusCycleRoot(Container newFocusCycleRoot)
設置當前焦點循環根。如果焦點所有者本身是一個焦點循環根,則在正常焦點遍歷期間,哪些 Component 表示焦點的上一個和下一個 Component 可能不明確。在這種情況下,需要使用當前焦點循環根來區分各種可能性。

此方法僅供 KeyboardFocusManager 和焦點實作使用。一般客戶端不能使用。

參數:
newFocusCycleRoot - 新焦點循環根
另請參見:
getCurrentFocusCycleRoot(), getGlobalCurrentFocusCycleRoot()

addPropertyChangeListener

public void addPropertyChangeListener(PropertyChangeListener listener)
將 PropertyChangeListener 添加到偵聽器列表。為此類別的所有綁定屬性註冊偵聽器,這些屬性包括: 如果偵聽器為 null,則不拋出異常,也不執行任何動作。

參數:
listener - 要添加的 PropertyChangeListener
另請參見:
removePropertyChangeListener(java.beans.PropertyChangeListener), getPropertyChangeListeners(), addPropertyChangeListener(java.lang.String,java.beans.PropertyChangeListener)

removePropertyChangeListener

public void removePropertyChangeListener(PropertyChangeListener listener)
從偵聽器列表移除 PropertyChangeListener。可以使用此方法移除曾為此類別的所有綁定屬性註冊的 PropertyChangeListener。

如果偵聽器為 null,則不拋出異常,也不執行任何動作。

參數:
listener - 要移除的 PropertyChangeListener
另請參見:
addPropertyChangeListener(java.beans.PropertyChangeListener), getPropertyChangeListeners(), removePropertyChangeListener(java.lang.String,java.beans.PropertyChangeListener)

getPropertyChangeListeners

public PropertyChangeListener[] getPropertyChangeListeners()
返回在此鍵盤焦點管理器上註冊的所有屬性更改偵聽器組成的陣列。

返回:
返回此鍵盤焦點管理器的所有 PropertyChangeListener;如果目前沒有註冊任何屬性更改偵聽器,則返回空陣列
從以下版本開始:
1.4
另請參見:
addPropertyChangeListener(java.beans.PropertyChangeListener), removePropertyChangeListener(java.beans.PropertyChangeListener), getPropertyChangeListeners(java.lang.String)

addPropertyChangeListener

public void addPropertyChangeListener(String propertyName,
                                      PropertyChangeListener listener)
將 PropertyChangeListener 添加到特定屬性的偵聽器列表。指定屬性可能是使用者定義的,也可能是以下屬性之一: 如果偵聽器為 null,則不拋出異常,也不執行任何動作。

參數:
propertyName - 上面列出的屬性名之一
listener - 要添加的 PropertyChangeListener
另請參見:
addPropertyChangeListener(java.beans.PropertyChangeListener), removePropertyChangeListener(java.lang.String,java.beans.PropertyChangeListener), getPropertyChangeListeners(java.lang.String)

removePropertyChangeListener

public void removePropertyChangeListener(String propertyName,
                                         PropertyChangeListener listener)
從特定屬性的偵聽器列表移除 PropertyChangeListener。可以使用此方法移除為特定綁定屬性註冊的 PropertyChangeListener。

如果偵聽器為 null,則不拋出異常,也不執行任何動作。

參數:
propertyName - 有效屬性名
listener - 要移除的 PropertyChangeListener
另請參見:
addPropertyChangeListener(java.lang.String,java.beans.PropertyChangeListener), getPropertyChangeListeners(java.lang.String), removePropertyChangeListener(java.beans.PropertyChangeListener)

getPropertyChangeListeners

public PropertyChangeListener[] getPropertyChangeListeners(String propertyName)
返回與指定屬性相關聯的所有 PropertyChangeListener 組成的陣列。

返回:
與指定屬性相關聯的所有 PropertyChangeListener;如果沒有添加過這樣的偵聽器,則返回空陣列。
從以下版本開始:
1.4
另請參見:
addPropertyChangeListener(java.lang.String,java.beans.PropertyChangeListener), removePropertyChangeListener(java.lang.String,java.beans.PropertyChangeListener)

firePropertyChange

protected void firePropertyChange(String propertyName,
                                  Object oldValue,
                                  Object newValue)
觸發 PropertyChangeEvent 以回應綁定屬性中的更改。該事件將被傳遞到所有已註冊的 PropertyChangeListener 中。如果 oldValue 和 newValue 相同,則不會傳遞事件。

參數:
propertyName - 已更改的屬性名
oldValue - 屬性的上一個值
newValue - 屬性的新值

addVetoableChangeListener

public void addVetoableChangeListener(VetoableChangeListener listener)
將 VetoableChangeListener 添加到偵聽器列表。為此類別的所有可否決屬性註冊偵聽器,這些屬性包括: 如果偵聽器為 null,則不拋出異常,也不執行任何動作。

參數:
listener - 要添加的 VetoableChangeListener
另請參見:
removeVetoableChangeListener(java.beans.VetoableChangeListener), getVetoableChangeListeners(), addVetoableChangeListener(java.lang.String,java.beans.VetoableChangeListener)

removeVetoableChangeListener

public void removeVetoableChangeListener(VetoableChangeListener listener)
從偵聽器列表移除 VetoableChangeListener。使用此方法可以移除曾為此類別的所有可否決屬性註冊的 VetoableChangeListener。

如果偵聽器為 null,則不拋出異常,也不執行任何動作。

參數:
listener - 要移除的 VetoableChangeListener
另請參見:
addVetoableChangeListener(java.beans.VetoableChangeListener), getVetoableChangeListeners(), removeVetoableChangeListener(java.lang.String,java.beans.VetoableChangeListener)

getVetoableChangeListeners

public VetoableChangeListener[] getVetoableChangeListeners()
返回在此鍵盤焦點管理器上註冊的所有可否決更改偵聽器組成的陣列。

返回:
此鍵盤焦點管理器的所有 VetoableChangeListener;如果目前沒有註冊任何可否決更改偵聽器,則返回空陣列
從以下版本開始:
1.4
另請參見:
addVetoableChangeListener(java.beans.VetoableChangeListener), removeVetoableChangeListener(java.beans.VetoableChangeListener), getVetoableChangeListeners(java.lang.String)

addVetoableChangeListener

public void addVetoableChangeListener(String propertyName,
                                      VetoableChangeListener listener)
將 VetoableChangeListener 添加到特定屬性的偵聽器列表。指定屬性可能是使用者定義的,也可能是以下屬性之一: 如果偵聽器為 null,則不拋出異常,也不執行任何動作。

參數:
propertyName - 上面列出的屬性名之一
listener - 要添加的 VetoableChangeListener
另請參見:
addVetoableChangeListener(java.beans.VetoableChangeListener), removeVetoableChangeListener(java.beans.VetoableChangeListener), getVetoableChangeListeners()

removeVetoableChangeListener

public void removeVetoableChangeListener(String propertyName,
                                         VetoableChangeListener listener)
從特定屬性的偵聽器列表移除 VetoableChangeListener。可以使用此方法移除為特定綁定屬性註冊的 VetoableChangeListener。

如果偵聽器為 null,則不拋出異常,也不執行任何動作。

參數:
propertyName - 有效屬性名
listener - 要移除的 VetoableChangeListener
另請參見:
addVetoableChangeListener(java.beans.VetoableChangeListener), getVetoableChangeListeners(), removeVetoableChangeListener(java.beans.VetoableChangeListener)

getVetoableChangeListeners

public VetoableChangeListener[] getVetoableChangeListeners(String propertyName)
返回與指定屬性相關聯的所有 VetoableChangeListener 組成的陣列。

返回:
與指定屬性相關聯的所有 VetoableChangeListener;如果沒有添加過這樣的偵聽器,則返回空陣列。
從以下版本開始:
1.4
另請參見:
addVetoableChangeListener(java.lang.String,java.beans.VetoableChangeListener), removeVetoableChangeListener(java.lang.String,java.beans.VetoableChangeListener), getVetoableChangeListeners()

fireVetoableChange

protected void fireVetoableChange(String propertyName,
                                  Object oldValue,
                                  Object newValue)
                           throws PropertyVetoException
觸發 PropertyChangeEvent 以回應可否決屬性中的更改。該事件將被傳遞到所有已註冊的 VetoableChangeListener 中。如果 VetoableChangeListener 拋出 PropertyVetoException,則觸發將所有 VetoableChangeListener 還原為舊值的新事件,並再次拋出異常。如果 oldValue 和 newValue 相同,則不會傳遞事件。

參數:
propertyName - 已更改的屬性名
oldValue - 屬性以前的值
newValue - 屬性的新值
拋出:
PropertyVetoException - 如果 VetoableChangeListener 拋出了 PropertyVetoException

addKeyEventDispatcher

public void addKeyEventDispatcher(KeyEventDispatcher dispatcher)
將 KeyEventDispatcher 添加到此 KeyboardFocusManager 的排程程序鏈中。此 KeyboardFocusManager 將請求每個 KeyEventDispatcher 在最終指派 KeyEvent 本身之前,首先指派由使用者產生的 KeyEvent。KeyEventDispatcher 將按其添加順序得到通知。一旦一個 KeyEventDispatcher 從其 dispatchKeyEvent 方法返回 true,通知就會暫停。可以添加的 KeyEventDispatcher 的總數沒有限制,添加特定 KeyEventDispatcher 實例的次數也沒有限制。

如果指定了 null 指派程序,則不執行動作也不拋出異常。

在多執行緒應用程序中,KeyEventDispatcher 的行為與其他 AWT 偵聽器相同。有關更多詳細資訊,請參閱 AWT 執行緒問題

參數:
dispatcher - 要添加到指派程序鏈的 KeyEventDispatcher
另請參見:
removeKeyEventDispatcher(java.awt.KeyEventDispatcher)

removeKeyEventDispatcher

public void removeKeyEventDispatcher(KeyEventDispatcher dispatcher)
移除以前添加到此 KeyboardFocusManager 排程程序鏈中的 KeyEventDispatcher。此 KeyboardFocusManager 本身不能被移除,除非它是通過調用 addKeyEventDispatcher 顯式重新註冊的。

如果指定了 null 排程程序,指定的排程程序沒有位於排程程序鏈中,或者此 KeyboardFocusManager 不是通過顯式重新註冊指定的,則不執行動作也不拋出異常。

在多執行緒應用程序中,KeyEventDispatcher 的行為與其他 AWT 偵聽器相同。有關更多詳細資訊,請參閱 AWT 執行緒問題

參數:
dispatcher - 要從排程程序鏈中移除的 KeyEventDispatcher
另請參見:
addKeyEventDispatcher(java.awt.KeyEventDispatcher)

getKeyEventDispatchers

protected List<KeyEventDispatcher> getKeyEventDispatchers()
作為 List 返回此 KeyboardFocusManager 的 KeyEventDispatcher 鏈。該 List 不包括此 KeyboardFocusManager,除非它是通過調用 addKeyEventDispatcher 顯式重新註冊的。如果沒有註冊其他 KeyEventDispatcher,則實作隨意返回 null 或長度為 0 的 List。客戶端程式碼不應假定某種行為多於其他行為,也不應假定建立行為後不能更改。

返回:
可能返回 null,也可能返回 KeyEventDispatcher 的空 List
另請參見:
addKeyEventDispatcher(java.awt.KeyEventDispatcher), removeKeyEventDispatcher(java.awt.KeyEventDispatcher)

addKeyEventPostProcessor

public void addKeyEventPostProcessor(KeyEventPostProcessor processor)
將 KeyEventPostProcessor 添加到此 KeyboardFocusManager 的後處理器鏈中。將 KeyEvent 指派給目標並由目標處理後,KeyboardFocusManager 將請求每個 KeyEventPostProcessor 作為 KeyEvent 的最終解析的一部分執行所有必要的後處理操作。KeyEventPostProcessor 將按其添加順序得到通知;當前 KeyboardFocusManager 將排在最後。一旦一個 KeyEventPostProcessor 從其 postProcessKeyEvent 方法返回 true,通知就會暫停。可以添加的 KeyEventPostProcessors 的總數沒有限制,添加特定 KeyEventPostProcessor 實例的次數也沒有限制。

如果指定了 null 後處理器,則不執行動作也不拋出異常。

在多執行緒應用程序中,KeyEventPostProcessor 的行為與其他 AWT 偵聽器相同。有關更多詳細資訊,請參閱 AWT 執行緒問題

參數:
processor - 要添加到後處理器鏈的 KeyEventPostProcessor
另請參見:
removeKeyEventPostProcessor(java.awt.KeyEventPostProcessor)

removeKeyEventPostProcessor

public void removeKeyEventPostProcessor(KeyEventPostProcessor processor)
從此 KeyboardFocusManager 的後處理器鏈中移除以前添加的 KeyEventPostProcessor。從該鏈中無法將 KeyboardFocusManager 本身完全移除。只能移除通過 addKeyEventPostProcessor 添加的其他參考。

如果指定了 null 後處理器,指定的後處理器沒有位於後處理器鏈中,或者此 KeyboardFocusManager 不是通過顯式添加指定的,則不執行動作也不拋出異常。

在多執行緒應用程序中,KeyEventPostProcessor 的行為與其他 AWT 偵聽器相同。有關更多詳細資訊,請參閱 AWT 執行緒問題

參數:
processor - 要從後處理器鏈中移除的 KeyEventPostProcessor
另請參見:
addKeyEventPostProcessor(java.awt.KeyEventPostProcessor)

getKeyEventPostProcessors

protected List<KeyEventPostProcessor> getKeyEventPostProcessors()
作為 List 返回此 KeyboardFocusManager 的 KeyEventPostProcessor 鏈。該 List 不包括此 KeyboardFocusManager,除非它是通過調用 addKeyEventPostProcessor 顯式添加的。如果沒有註冊任何 KeyEventDispatcher,則實作隨意返回 null 或長度為 0 的 List。客戶端程式碼不應假定某種行為多於其他行為,也不應假定建立行為後不能更改。

返回:
可能返回 null 也可能返回 KeyEventPostProcessor 的空 List
另請參見:
addKeyEventPostProcessor(java.awt.KeyEventPostProcessor), removeKeyEventPostProcessor(java.awt.KeyEventPostProcessor)

dispatchEvent

public abstract boolean dispatchEvent(AWTEvent e)
AWT 事件排程程序可以調用此方法,請求當前的 KeyboardFocusManager 為其指派指定的事件。所有 KeyboardFocusManager 需要指派所有 FocusEvent、所有與焦點相關的 WindowEvent 和所有 KeyEvent。這些事件應該基於 KeyboardFocusManager 的焦點所有者和聚焦及活動 Window 概念指派,有時會覆寫指定的 AWTEvent 的源程式碼。必須使用 redispatchEvent 完成指派操作,以防 AWT 事件排程程序遞歸式請求 KeyboardFocusManager 再次指派該事件。如果此方法返回 false,則 AWT 事件排程程序將嘗試指派該事件本身。

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

redispatchEvent

public final void redispatchEvent(Component target,
                                  AWTEvent e)
重新指派 AWTEvent 的方式是,AWT 事件排程程序不會遞歸式請求 KeyboardFocusManager 或任何已安裝的 KeyEventDispatcher 再次指派該事件。dispatchEvent 的客戶端實作和客戶端定義的 KeyEventDispatcher 必須調用 redispatchEvent(target, e) 而不是調用 target.dispatchEvent(e) 來指派事件。

此方法僅供 KeyboardFocusManager 和 KeyEventDispatcher 使用。一般客戶端不能使用。

參數:
target - 應將事件指派到的 Component
e - 要指派的事件
另請參見:
dispatchEvent(java.awt.AWTEvent), KeyEventDispatcher

dispatchKeyEvent

public abstract boolean dispatchKeyEvent(KeyEvent e)
通常情況下,如果該指派程序鏈中的其他 KeyEventDispatcher 沒有指派 KeyEvent 或者沒有註冊其他 KeyEventDispatcher,則 dispatchEvent 將調用此方法。如果此方法的實作返回 false,則 dispatchEvent 可能試圖指派 KeyEvent 本身,或者可能簡單地返回 false。如果返回 true,則 dispatchEvent 也應該返回 true

指定者:
介面 KeyEventDispatcher 中的 dispatchKeyEvent
參數:
e - 當前 KeyboardFocusManager 已經請求此 KeyEventDispatcher 指派的 KeyEvent
返回:
如果指派了 KeyEvent,則返回 true;否則,返回 false
另請參見:
dispatchEvent(java.awt.AWTEvent)

postProcessKeyEvent

public abstract boolean postProcessKeyEvent(KeyEvent e)
dispatchKeyEvent 將調用此方法。預設情況下,此方法將通過使用該事件並啟動快捷方式來處理映射到 AWT MenuShortcut 的所有未使用的 KeyEvent。

指定者:
介面 KeyEventPostProcessor 中的 postProcessKeyEvent
參數:
e - 要後處理的 KeyEvent
返回:
true,指示任何其他 KeyEventPostProcessor 都將得不到該 KeyEvent 的通知。
另請參見:
dispatchKeyEvent(java.awt.event.KeyEvent), MenuShortcut

processKeyEvent

public abstract void processKeyEvent(Component focusedComponent,
                                     KeyEvent e)
當且僅當該 KeyEvent 表示指定 focusedComponent 的焦點遍歷鍵時,此方法啟動焦點遍歷操作。focusedComponent 應該是當前的焦點所有者,儘管這一點不是必需的。如果它不是,焦點遍歷仍把 focusedComponent 當作是當前焦點所有者而繼續執行操作。

參數:
focusedComponent - 指定的事件表示其焦點遍歷鍵時,將成為焦點遍歷操作基礎的 Component
e - 可能表示焦點遍歷鍵的事件

enqueueKeyEvents

protected abstract void enqueueKeyEvents(long after,
                                         Component untilFocused)
在指定的 Component 成為焦點所有者以前由 AWT 調用,以通知 KeyboardFocusManager 延遲指派 KeyEvent。如果客戶端程式碼請求焦點更改,則 AWT 將確定本機視窗作業系統是否批准此請求,然後由 AWT 調用此方法。在指定的 Component 接收 FOCUS_GAINED 事件或 AWT 通過調用 dequeueKeyEventsdiscardKeyEvents 取消延遲請求以前,KeyboardFocusManager 負責延遲指派時間戳晚於指定時間戳的 KeyEvent。

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

dequeueKeyEvents

protected abstract void dequeueKeyEvents(long after,
                                         Component untilFocused)
由 AWT 調用以通知 KeyboardFocusManager 應該取消延遲指派 KeyEvent。應該釋放由於使用相同時間戳和 Component 調用 enqueueKeyEvents 而加入佇列的 KeyEvent,以將它們正常指派給當前焦點所有者。如果給定的時間戳小於零,則應該取消具有 oldest 時間戳的給定 Component 的未處理排隊請求(如果有)。

參數:
after - 在對 enqueueKeyEvents 的調用中指定的時間戳,或者任何小於 0 的值
untilFocused - 在對 enqueueKeyEvents 的調用中指定的 Component
另請參見:
enqueueKeyEvents(long, java.awt.Component), discardKeyEvents(java.awt.Component)

discardKeyEvents

protected abstract void discardKeyEvents(Component comp)
由 AWT 調用以通知 KeyboardFocusManager 應該取消延遲指派 KeyEvent。應該丟棄由於使用相同 Component 一次或多次調用 enqueueKeyEvents 而加入佇列 KeyEvent。

參數:
comp - 對 enqueueKeyEvents 的一次或多次調用中指定的 Component
另請參見:
enqueueKeyEvents(long, java.awt.Component), dequeueKeyEvents(long, java.awt.Component)

focusNextComponent

public abstract void focusNextComponent(Component aComponent)
聚焦 aComponent 之後的 Component,通常基於 FocusTraversalPolicy。

參數:
aComponent - 作為焦點遍歷操作基礎的 Component
另請參見:
FocusTraversalPolicy

focusPreviousComponent

public abstract void focusPreviousComponent(Component aComponent)
聚焦 aComponent 之前的 Component,通常基於 FocusTraversalPolicy。

參數:
aComponent - 作為焦點遍歷操作基礎的 Component
另請參見:
FocusTraversalPolicy

upFocusCycle

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

參數:
aComponent - 作為焦點遍歷操作基礎的 Component

downFocusCycle

public abstract void downFocusCycle(Container aContainer)
將焦點下移一個焦點遍歷循環。通常情況下,如果 aContainer 是焦點循環根,則將焦點所有者設置為要聚焦的 aContainer 的預設 Component,而將當前焦點循環根設置為 aContainer。如果 aContainer 不是焦點循環根,則不進行焦點遍歷操作。

參數:
aContainer - 作為焦點遍歷操作基礎的 Container

focusNextComponent

public final void focusNextComponent()
聚焦當前焦點所有者之後的 Component。


focusPreviousComponent

public final void focusPreviousComponent()
聚焦當前焦點所有者之前的 Component。


upFocusCycle

public final void upFocusCycle()
從當前焦點所有者將焦點上移一個焦點遍歷循環。通常情況下,將新焦點所有者設置為當前焦點所有者的焦點循環根,而將當前焦點循環根設置為新焦點所有者的焦點循環根。但是,如果當前焦點所有者的焦點循環根是一個 Window,則通常將焦點所有者設置為要聚焦的焦點循環根的預設 Component,而當前焦點循環根保持不變。


downFocusCycle

public final void downFocusCycle()
當且僅當當前焦點所有者是一個作為焦點循環根的 Container 時,從當前焦點所有者將焦點下移一個焦點遍歷循環。通常情況下,將焦點所有者設置為要聚焦的當前焦點所有者的預設 Component,而將當前焦點循環根設置為當前焦點所有者。如果當前焦點所有者不是作為焦點循環根的 Container,則不進行任何焦點遍歷操作。


JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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