2011-12-14 6 views
2

Javaアプリケーションでショートカットを作成しています。ユーザーがGを押すと、ダイアログがポップアップします。しかし、私は、ユーザーがテキストフィールドに入力しているときにこれが起きないようにします。キーリリースイベントが発生したときに領域のタイプを検出する方法はありますか?そのため、ユーザーがテキストフィールドにないときにダイアログウィンドウのポップアップを作成できるだけですか?Javaでキー押下イベントが発生した場合の領域のタイプを確認

ありがとうございます。

+1

http://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html助けになるかもしれません。 –

答えて

3

Window.getFocusOwner()を使用して、アプリケーションにフォーカスを持つComponentを取得し、instanceof checkを使用できます。例えば

public void keyReleased(KeyEvent e) 
    { 
     if(e.getKeyCode() == KeyEvent.VK_G && !(myWindow.getFocusOwner() instanceof TextField)) 
     { 
      showDialog(); 
     } 
    } 
+1

これは本当に必要ですか?テキストフィールドは 'G'だけを消費し、 'G'がタイプされているという事実は、他のものによって消費されていないときにダイアログコードに到達するはずです。 AKJで提案されているようなキーバインディングを使用すると、これが可能になるはずです – Robin

関連する問題