4

北にタブ付きのペインがあるスイング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

4

2 に答える 2

2

これが答えになるように、質問の編集からコピーされたソリューションを次に示します。;-)

ToolTipManager は Key Ctrl+を登録してF1、キーの組み合わせが押された場合にツールヒント テキストを表示します。そのため、ツールヒントのあるボタンがフォーカスされている場合、 Ctrl+F1は ToolTipManager によって処理されます。それ以外の場合、私のアクションが呼び出されます。

于 2008-09-26T11:06:25.503 に答える
0

OSがF1キーを再ターゲットする可能性がありますか? キー リスナーをインストールし、処理されるイベントを確認します。

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

于 2008-09-26T10:40:57.330 に答える