Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Key Events не обрабатываются 
:(
    Опции темы
i_SweP
Дата 26.2.2010, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 23.6.2007

Репутация: нет
Всего: нет



Не пойму, что мешает обработке клавиш, MouseAdapter сразу заработал, а клавиши не хотят

Код

public class GamePanel extends JPanel
{
    // ...
    private UserActions userAction = new UserActions();

    public void StartGameCircle()    // запускается "снаружи"
    {
        addKeyListener( userAction );    // через new KeyAdapter() {} понятно тоже пробовал
    
        addMouseListener( new MouseAdapter()    // вот такая шняга проходит !
        {
            public void mouseClicked(MouseEvent e)
            {
                // ...
                repaint();
            }
        } );

        GameThread g = new GameThread();
        g.start();
    }

    class GameThread extends Thread
    {
        public void run()
        {
            // ... логика, repaint'ы и т.д.
        }
    }

    class UserActions extends KeyAdapter
    {
        public void keyPressed(KeyEvent e)
        {
            // ... 
            // вот здесь дебаггер ни разу не остановился
        }
    }

}



Может я просто чего-то пропустил, уже вечер всё-таки  smile 

Это сообщение отредактировал(а) i_SweP - 26.2.2010, 22:11
PM MAIL   Вверх
EnJ
Дата 26.2.2010, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 4.1.2010
Где: Харьков

Репутация: нет
Всего: нет



может:
Код

addKeyListener( new userAction() );

PM MAIL ICQ   Вверх
jk1
Дата 26.2.2010, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 21
Всего: 75



В официальной документации сказано:
Цитата

Key events indicate when the user is typing at the keyboard. Specifically, key events are fired by the component with the keyboard focus when the user presses or releases keyboard keys. 

Ваша панель имеет фокус на момент нажатия клавиш? Видимо нет.

Если вы хотите обрабатывать нажатия на клавиши, используйте Key Bindings
Вот пример, который заставит вашу панель ловить нажатия Esc:
Код

 panel.registerKeyboardAction(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                // обработка нажатия 
            }
        }, KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);



--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
i_SweP
Дата 5.3.2010, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 23.6.2007

Репутация: нет
Всего: нет



Всё оказалось проще - надо было вызвать requestFocus() для панельки
но вариант jk1 тоже приму на заметку, спасибо
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0486 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.