0
以下代碼/我的假設有什麼問題?全局動作監聽器
首先,我註冊AWT事件偵聽器:
...
Toolkit.getDefaultToolkit().addAWTEventListener(this,
AWTEvent.ACTION_EVENT_MASK | AWTEvent.ITEM_EVENT_MASK
);
...
然後,我希望每一個用戶選擇項目時eventDispatched(AWTEvent)
得到所謂從JComboBox
或JList
。然而,沒有任何反應。爲什麼?
@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
}
}
我知道,我可以添加到ActionListener
和JComboBox
JList
,但我想避免這種情況的解決方案,因爲我試圖記錄用戶活動,因此聽衆應該是「全球性」。
爲什麼你認爲你需要的語義的事件,如動作/項_global_監聽器?聽起來很腥...... – kleopatra
因爲我認爲'user activity tracker'的實現會比添加action/item/... listener到包含在我的GUI中的每個JComponent更簡單。 –
單身思維是邪惡的:-)並不一定觸發這些_semantic_事件的用戶活動 - 也可能以編程方式發生。 – kleopatra