Java Swing:Ctrl + F1はグローバルに機能しませんが、それぞれのキーの組み合わせ
質問
北にタブ付きペインのあるスイング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 がアクションを実行します。
問題は、キーコードをe.g.に変更すると、どこでも機能することです。 VK_F2
。
キー F1 は、プログラムの他の場所では使用されません。
アイデアはありますか
ありがとう、 André
編集: Javaソースコードの全文検索で答えが得られました: ToolTipManager
はキー Ctrl + F1を登録します。キーの組み合わせが押された場合にツールチップテキストを表示します。したがって、ツールチップのあるボタンにフォーカスがある場合、 Ctrl + F1 は ToolTipManager
によって処理されます。そうでない場合、アクションが呼び出されます。
解決
これが答えを得るために、質問の編集からコピーされたソリューションを次に示します。 ;-)
ToolTipManagerはキーを登録します Ctrl + F1 は、次の場合にツールチップテキストを表示します。 キーの組み合わせが押されています。だから ツールチップのあるボタンにフォーカスがあり、 Ctrl + F1 は、 ToolTipManager。そうでなければ私の行動は 呼ばれます。
他のヒント
OSが F1 キーをリターゲットする可能性がありますか?キーリスナーをインストールし、処理されるイベントを確認します。
ところで:質問を編集してテスト可能なコードを挿入できると助かります。