0

在我们正在编写的软件中,我们有时会使用 GlassPane 来防止用户在程序繁忙时与程序进行交互,这会产生意想不到的副作用,即某些按钮的翻转被设置但没有被删除。

翻转设置,玻璃窗格激活,玻璃窗格消耗 mouse_exit 事件。

GlassPane 注册为:

Toolkit.getDefaultToolkit().addAWTEventListener(this, 
                AWTEvent.MOUSE_EVENT_MASK | AWTEvent.KEY_EVENT_MASK
                | AWTEvent.MOUSE_MOTION_EVENT_MASK 
                | AWTEvent.MOUSE_WHEEL_EVENT_MASK );

因为我们发现我们也需要捕捉鼠标运动和鼠标滚轮事件。

public void eventDispatched(AWTEvent event) {
            if (event instanceof KeyEvent) {
                ((KeyEvent)event).consume();
            } else if (event instanceof MouseEvent) {
                ((MouseEvent) event).consume();
            }
}

无论如何,如果事件来自 Mouse_Exit 事件,是否可以在代码的上述位置找到?

4

1 回答 1

0

也许您可以使用Disabled Glass Pane方法。它将侦听器添加到 GlassPane 以拦截事件。

该代码当前不使用 MouseWheelListener,因此您可能需要添加它。

于 2015-05-14T16:01:18.463 回答