2012-12-04 205 views
0

以下代碼/我的假設有什麼問題?全局動作監聽器

首先,我註冊AWT事件偵聽器:

... 
Toolkit.getDefaultToolkit().addAWTEventListener(this, 
    AWTEvent.ACTION_EVENT_MASK | AWTEvent.ITEM_EVENT_MASK 
    ); 
... 

然後,我希望每一個用戶選擇項目時eventDispatched(AWTEvent)得到所謂從JComboBoxJList。然而,沒有任何反應。爲什麼?

@Override 
public void eventDispatched(AWTEvent event) { 
    if (event instanceof ItemEvent) { 
     System.out.println("ITEM EVENT"); // this is never called 
    } else if (event instanceof ActionEvent) { 
     System.out.println("ACTION EVENT"); // this is never called 
    } 
} 

我知道,我可以添加到ActionListenerJComboBoxJList,但我想避免這種情況的解決方案,因爲我試圖記錄用戶活動,因此聽衆應該是「全球性」。

+0

爲什麼你認爲你需要的語義的事件,如動作/項_global_監聽器?聽起來很腥...... – kleopatra

+0

因爲我認爲'user activity tracker'的實現會比添加action/item/... listener到包含在我的GUI中的每個JComponent更簡單。 –

+0

單身思維是邪惡的:-)並不一定觸發這些_semantic_事件的用戶活動 - 也可能以編程方式發生。 – kleopatra

回答