Почему мой keyListener перестает работать в полноэкранном режиме? - PullRequest
2 голосов
/ 02 декабря 2011

У меня есть ключевой слушатель, определенный обычным образом:

frame.addKeyListener(this); 
frame.setFocusable(true);

И методы работы с нажатием клавиши, когда происходит выход из программы, программа завершается.

Это работает, но когда я делаю JFrame, заполняю все окно, используя:

frame.setSize(Toolkit.getDefaultToolkit().getScreenSize());
frame.setLocation(0, 0);
frame.validate();     

Тогда ключевой слушатель перестает работать. Может кто-нибудь объяснить, почему это так и что мне нужно делать, когда я выхожу на весь экран, чтобы держать слушателя?

1011 * ТИА *

Ответы [ 2 ]

3 голосов
/ 02 декабря 2011

, когда происходит выход из программы, выход из программы.

Вы бы добавили Связывания клавиш в корневую панель вашего фрейма.Что-то вроде:

KeyStroke escapeKeyStroke = KeyStroke.getKeyStroke("ESCAPE");
Action escapeAction = new AbstractAction()
{
    public void actionPerformed(ActionEvent e)
    {
        // add code to end program
    }
};

getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(escapeKeyStroke, "ESCAPE");
getRootPane().getActionMap().put("ESCAPE", escapeAction);
0 голосов
/ 02 декабря 2011

Я думаю, вам нужно добавить KeyListener в подкомпонент JFrame.Когда он переходит в полноэкранный режим, я не думаю, что кадр (который включает в себя строку заголовка, кнопки закрытия / максимизации / минимизации, все они скрыты в полноэкранном режиме) может принимать входные события.

...