Java Swing:Ctrl + F1はグローバルに機能しませんが、それぞれのキーの組み合わせ

StackOverflow https://stackoverflow.com/questions/138533

  •  02-07-2019
  •  | 
  •  

質問

北にタブ付きペインのあるスイング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 キーをリターゲットする可能性がありますか?キーリスナーをインストールし、処理されるイベントを確認します。

ところで:質問を編集してテスト可能なコードを挿入できると助かります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top