Определить тип региона, когда в Java происходит событие нажатия клавиши

Я создаю ярлык в своем приложении Java. Когда пользователь нажимает G, появляется диалоговое окно. Однако я не хочу, чтобы это происходило, когда пользователь вводит текстовое поле. Есть ли способ определить тип региона, когда происходит событие отпускания клавиши, чтобы я мог сделать всплывающее диалоговое окно только тогда, когда пользователь не находится в текстовом поле?

Заранее спасибо.


person rustybeanstalk    schedule 14.12.2011    source источник
comment
docs.oracle.com/javase/tutorial/uiswing/misc/keybinding. html может помочь.   -  person Ashwinee K Jha    schedule 14.12.2011


Ответы (1)


Вы можете использовать Window.getFocusOwner(), чтобы получить компонент, который имеет фокус в вашем приложении, а затем использовать проверку instanceof.

Например:

    public void keyReleased(KeyEvent e)
    {
        if(e.getKeyCode() == KeyEvent.VK_G && !(myWindow.getFocusOwner() instanceof TextField))
        {
            showDialog();
        }
    }
person Eric Siebeneich    schedule 14.12.2011
comment
Это действительно необходимо? Текстовое поле должно просто потреблять «G», и тот факт, что «G» набирается, должен достигать вашего кода диалога только тогда, когда он не используется ничем другим. С этими сочетаниями клавиш, предложенными AKJ, это должно быть возможно. - person Robin; 15.12.2011