Нажатие клавиш во время работы потока - как захватить ключи? - PullRequest
1 голос
/ 23 февраля 2012

У меня есть JPanel, который содержит несколько других объектов, которые делают вещи.Я упросту пример, говоря о каком-то объекте круга (определенном классом окружности, который я создал) и квадратном объекте (аналогично).

круг случайно перемещается по экрану, а квадрат сидит на своем месте.Я собираюсь переместить квадрат с помощью кнопок со стрелками.текущий дизайн должен иметь поток с циклом while, который содержит задержку, которая устанавливает «частоту обновления» внутри своего метода run.

Я пытаюсь всеми известными мне способами захватывать клавиши со стрелками и перемещать квадрат вокруг, пока шарик бегает вокруг экрана.

как мне зафиксировать нажатия клавиш (например, стрелки), чтобы я мог знать, куда перемещать свой квадрат?Я попытался реализовать keylistener в jpanel, но это не сработало.когда я пытался использовать KeyEvent в бегах, я получил исключение.

пожалуйста, спасите меня.:)

РЕДАКТИРОВАТЬ:

Спасибо за эту информацию.Я хотел бы получить дополнительную помощь для решения этой проблемы -

Допустим, у меня есть следующий код:

this.getInputMap().put(KeyStroke.getKeyStroke("UP"), "actionName");
this.getInputMap().put(KeyStroke.getKeyStroke("DOWN"), "actionName");

  this.getActionMap().put("actionName",
            new AbstractAction("actionName") {
                public void actionPerformed(ActionEvent evt) {
                   //dostuff
        }
     }
);

Как мне различать нажатия UP и DOWN?что мне нужно изменить?

Спасибо!Я немного новичок, я знаю:)

1 Ответ

2 голосов
/ 23 февраля 2012

KeyListener не предназначен для прослушивания в Swing GUI, этот Прослушиватель был создан для до_исторического AWT Component, в наши дни так далеко, используйте KeyBindings , этот пример может спасти вашу личность

...