2009-08-05 7 views
8

Javaアプリケーションで使用します。セットアップアプリケーション広いキーリスナーのキーの組み合わせ(例えば<kbd>はCtrl</kbd> + <kbd>Shiftキー</kbd> + <kbd>T</kbd>)が押されたとき、私はセットアップアプリケーションワイドキーリスナー(キーボードショートカット)、なるように行う、特定のアクションが呼び出された方法

キーボードショートカットはJMenuBarのメニュー項目を設定できますが、私の場合はアプリケーションにメニューバーがありません。

答えて

17

JavaチュートリアルのHow To Use Key Bindingsのセクションをご覧ください。

あなたが作成して、コンポーネントのActionMapActionを登録し、アプリケーションのコンポーネントのInputMap秒のいずれかで(KeyStrokeアクション名)のペアを登録する必要があります。 JMenuBarがない場合は、キーバインディングをアプリケーションのトップレベルのJPanelに登録するだけで済みます。例えば

Action action = new AbstractAction("Do It") { ... }; 

// This is the component we will register the keyboard shortcut with. 
JPanel pnl = new JPanel(); 

// Create KeyStroke that will be used to invoke the action. 
KeyStroke keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_T, InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK); 

// Register Action in component's ActionMap. 
pnl.getActionMap().put("Do It", action); 

// Now register KeyStroke used to fire the action. I am registering this with the 
// InputMap used when the component's parent window has focus. 
pnl.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(keyStroke, "Do It"); 
+0

それは働きます!ありがとう。 – n002213f

+1

問題はありません - 私のソリューションを好きなだけ受け入れることができます! (私はポイントが必要です!)。 – Adamski

関連する問題

 関連する問題