北にタブ付きのペインがあるスイングGUIがあります。いくつかの重要なイベントが入力マップに追加されます。
InputMap paneInputMap = pane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
paneInputMap.put( KeyStroke.getKeyStroke( KeyEvent.VK_E, KeyEvent.CTRL_MASK ), "finish");
paneInputMap.put( KeyStroke.getKeyStroke( KeyEvent.VK_F1, KeyEvent.CTRL_MASK ), "toggletoolbar");
タブ付きペインまたはツールバーの別のボタンにフォーカスがある場合、Ctrl+F1には機能がありません。+別のコンポーネントがフォーカスされている場合(JTreeなど)、Ctrl+F1アクションを実行します。
問題は、キーコードをたとえばに変更すると、どこでも機能することVK_F2
です。
キーF1は、プログラムの他の場所では使用されません。
何か案が?
ありがとう、アンドレ
編集: Javaソースコードでの全文検索は答えを与えました:キーの組み合わせが押された場合にツールチップテキストを表示するためにキー+をToolTipManager
登録します。したがって、ツールチップのあるボタンにフォーカスがある場合、+は。によって処理されます。それ以外の場合は、私のアクションが呼び出されます。CtrlF1CtrlF1ToolTipManager