2011-07-02 5 views
1

私のアプリケーションは1つのJFrameと2つの子JDialogを使用します。複数のウィンドウでJMenusキーストロークを使用しますか?

JMenusとKeystrokesを持つJMenubarは、1つの子JDialogにあります。私の問題は、これらのキーストロークは、子JDialogがフォーカスされている場合のみ機能し、他のJDialogまたはJFrameがフォーカスされている場合は機能しません。

この問題を解決する方法はありますか?

+1

ここに記載されているものとは異なる「フォーカス状況」を使用している可能性がありますか? http://download.oracle.com/javase/tutorial/uiswing/misc/keybinding.html – ignis

+0

間違っていなければなりません.1) 'JFrame'、2)' JDialog'、または両方から 'JMenu&JMenuItems'を呼び出しましたか? JFrame'と 'JDialog'も – mKorbel

+0

私は' menuItem.setAccelerator(KeyStroke.getKeyStroke( "meta shift S")); 'を呼び出しました。次に、JMenuItemsをJMenuに、JMenuをJMenuBarに、JMenuBarをJDialogに追加しました。 – esanits

答えて

1

これは問題ではありませんが、KeyStrokesはフォーカスのあるコンポーネント(ウィンドウ)にのみ移動します。他のウィンドウがキーストロークをインターセプトするのに意味がない場合。

このようなことを本当にしたいのであれば、Global Event Listenerを見る必要があると思います。

関連する問題