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 に答える