2012-12-04 56 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

回答