Swing組件集合的事件處理(六) – JAVA編程語言程序開發技術文章

 

2.3 Swing特定的事件處理


請記住,Swing組件是構建在AWT庫之上的,Swing組件庫具有一些改進的功能從而使得事件處理更為簡單。功能改進覆蓋AWT核心事件處理特性之上,由基本的動作監聽到焦點管理。


為瞭簡化事件處理,Swing庫使用Action接口擴展瞭原始的ActionListener接口來存儲具有事件處理器的可視屬性。這使得事件處理器的創建獨立於可視化組件。然後,當Action在稍後與一個組件相關聯時,組件直接由事件處理器自動獲取信息(例如按鈕標簽)。這包括當Action被修改時更新標簽的通知。AbstractAction與TextAction類實現瞭這個概念。


Swing庫同時添加瞭KeyStroke類從而使得我們更容易的響應鍵盤事件。當一個特定的擊鍵序列被按下時,我們可以通知組件必須響應特定的動作,而無需監聽一個特定鍵的所有按鍵事件。這些擊鍵到動作的映射存儲在InputMap與ActionMap對象的組合中。當組件容器具有信息時,InputMap就會特例化ComponentInputMap。Swing文本組件借助於Keymap接口可以更容易的使用這些來存儲擊鍵到動作的映射。第16章更詳細的描述瞭TextAction支持的映射,以及文本事件處理功能的其餘部分。


KeyboardFocusManager與DefaultKeyboardFocusManager,借助於FocusTraversalPolicy及其實現的幫助,管理焦點子系統。InputVerifier用於用戶輸入驗證。這些內容都會在本章稍後的Swing組件管理部分進行討論。

2.3.1 Action接口

Action接口是ActionListener接口的擴展,他可以非常靈活的用於定義與作為觸發代理的組件相獨立的共享事件處理器。這個接口實現瞭ActionListener,並且定義瞭一個查詢表數據結構,其鍵值作為屬性。然後,當Action與一個組件相關聯時,這些顯示屬性會自動的傳遞到Action。下面是接口定義:


  1. Java代碼 復制代碼 收藏代碼


    1. public interface Action implements ActionListener {   

    2.   // Constants    

    3.   public final static String ACCELERATOR_KEY;   

    4.   public final static String ACTION_COMMAND_KEY;   

    5.   public final static String DEFAULT;   

    6.   public final static String LONG_DESCRIPTION;   

    7.   public final static String MNEMONIC_KEY;   

    8.   public final static String NAME;   

    9.   public final static String SHORT_DESCRIPTION;   

    10.   public final static String SMALL_ICON; // Listeners   

    11.   public void addPropertyChangeListener(PropertyChangeListener listener);   

    12.   public void removePropertyChangeListener(PropertyChangeListener listener);   

    13.   // Properties   

    14.   public&n

發佈留言