我扩展了AWTEventListener
,然后将其添加到工具箱中。但是,当我尝试断言我的监听器在AWTListeners
中时,断言失败。我从侦听器中调用它(尽管我不知道为什么这会引起问题)。
Toolkit.getDefaultToolkit().addAWTEventListener(this, AWTEvent.MOUSE_EVENT_MASK
| AWTEvent.KEY_EVENT_MASK
| AWTEvent.MOUSE_MOTION_EVENT_MASK
| AWTEvent.MOUSE_WHEEL_EVENT_MASK);
assert ArrayUtils.contains
(Toolkit.getDefaultToolkit().getAWTEventListeners(), this);
最佳答案
默认工具包中的AWTEventListener
保留为代理(java.awt.event.AWTEventListenerProxy
),它们包装了添加的侦听器。
Toolkit.getDefaultToolkit().addAWTEventListener(this, ...);
for (AWTEventListener listener : Toolkit.getDefaultToolkit().getAWTEventListeners()) {
java.awt.event.AWTEventListenerProxy proxy = (java.awt.event.AWTEventListenerProxy) listener;
if (proxy.getListener().equals(this) {
// there, we found it.
}
}