Перемещение JLabel с клавишами со стрелками - PullRequest
0 голосов
/ 16 января 2010

Извините, для двойной публикации, один раз уже публиковал этот вопрос, но я понял, что не достаточно ясен. Мне все еще не удалось найти ответ на мой вопрос, поэтому я попытаюсь лучше описать мою проблему здесь:

У меня есть следующие классы:

public class Paddle extends JLabel {}
public class Canvas extends JPanel implements Runnable {}

Теперь, когда я запускаю поток, описанный в Canvas, я хочу бесконечный цикл (цикл при выходе из программы). В этом цикле у меня есть переменная DIRECTION. Когда нажата левая стрелка, я бы хотел, чтобы это было установлено -1. Если нажата клавиша со стрелкой вправо, я бы хотел, чтобы это значение равнялось +1. Если ни один из приведенных выше случаев не имеет значения true, его значение должно быть равно 0.

Надеюсь, на этот раз я был более откровенен. Если нет, скажите, пожалуйста.

1 Ответ

0 голосов
/ 16 января 2010

Ну, чтобы получить нажатия клавиш, вам нужен класс, который реализует KeyListener

Как это:

public class MyKeyListener implements KeyListener, MouseListener{
   int direction = 0;

    public void keyPressed(KeyEvent e) {
        if(e.getKeyCode()  == KeyEvent.VK_LEFT) direction = -1;
        else if(e.getKeyCode()  == KeyEvent.VK_RIGHT) direction = 1;
    }

    public void keyReleased(KeyEvent e) {
        direction = 0;
    }
}

Затем в коде инициализации (например, в конструкторе вашего производного класса JPanel) вы устанавливаете в качестве прослушивателя ключа экземпляр вашего класса MyKeyListener

   MyKeyListener  mk = new MyKeyListener();
   this.addKeyListener(mk);

В вашем цикле вы просто смотрите на направление направления mk;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...