3
アクセシビリティ要件ごとに、シフト + F10は、右クリックのコンテキストメニューを開くことになっています。Java Swing Shift + F10アクセシビリティ
スイングでは、作成するすべてのコンポーネントにキーバインドを追加するだけです。しかし、私はすべてを処理するためにEventQueueを拡張して実験しましたShift + F10プレス。特に、私は右クリックmousePressesにShiftキー + F10キーイベントに変換するためには、dispatchEvent(AWTEventです)をオーバーライドしました:
protected void dispatchEvent(AWTEvent event) {
if (event instanceof KeyEvent) {
KeyEvent ev = (KeyEvent) event;
if ((ev.getKeyCode() == KeyEvent.VK_F10) &&
(ev.getModifiersEx() & InputEvent.SHIFT_DOWN_MASK) > 0) {
KeyboardFocusManager kfm = KeyboardFocusManager.getCurrentKeyboardFocusManager();
Component comp = kfm.getFocusOwner();
Point mouse = MouseInfo.getPointerInfo().getLocation();
SwingUtilities.convertPointFromScreen(mouse, comp);
eventToDispatch = new MouseEvent(comp,
MouseEvent.MOUSE_RELEASED, ev.getWhen(), 0, mouse.x, mouse.y,
1, true);
}
}
}
しかし、これは閉鎖することができることからShiftキー + F10を防止しますJPopupMenusが起動します。このソリューションが実行可能かどうか、またはこの要件を満たすためのよりよい方法があるかどうか
私は各コンポーネントのキーボードアクションを登録できることはすでに知っていました。しかし、私たちのアプリは大きいです。その結果、既にマウスポップアップトリガーを処理する多くのコンポーネントが存在します。だからこそ私は、EventQueueのすべてのShift + F10プレスをキャプチャすることでこれを行うことを検討しています。 – Huey