Swing 全局动作侦听器

Swing 全局动作侦听器,swing,Swing,以下代码/我的假设有什么问题 首先,我注册AWT事件侦听器: ... Toolkit.getDefaultToolkit().addAWTEventListener(this, AWTEvent.ACTION_EVENT_MASK | AWTEvent.ITEM_EVENT_MASK ); ... 然后,我希望每次用户从JComboBox或JList中选择项目时,都会调用eventDispatched(AWTEvent)。然而,什么也没有发生。为什么? @Override pu

以下代码/我的假设有什么问题

首先,我注册AWT事件侦听器:

...
Toolkit.getDefaultToolkit().addAWTEventListener(this,
    AWTEvent.ACTION_EVENT_MASK | AWTEvent.ITEM_EVENT_MASK
    );
...
然后,我希望每次用户从
JComboBox
JList
中选择项目时,都会调用
eventDispatched(AWTEvent)
。然而,什么也没有发生。为什么?

@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
,但我想避免使用这种解决方案,因为我正在尝试记录用户活动,因此侦听器应该是“全局的”。

我刚刚发现我要求的功能可能不受支持:

相关职位:

为什么您认为需要一个全局侦听器来处理动作/项目等语义事件?听起来有点可疑……因为我认为“用户活动跟踪器”的实现比添加action/item/更简单。。。我的GUI中包含的每个JComponent的侦听器。singleton-thinking是邪恶的:-),触发这些语义事件的不一定是用户活动,也可能是通过编程实现的。