Какая польза от опроса клавиатуры? - PullRequest
1 голос
/ 18 декабря 2011

Я делаю приложение для 2D-графики с использованием Java 1.6. Для получения ввода с клавиатуры я просто использую addKeyListener() на JPanel и в одном из методов обратного вызова keyPressed (KeyEvent ke), я делаю рисование

 `public void keyPressed(KeyEvent ke)
  {
        keyName=KeyEvent.getKeyText(ke.getKeyCode());
       /*calling other classes ,calculating values
        and drawing on the jpanel (moving an image ,etc)
        */
       ke.consume();
  }`

Но есть другой подход, который я нашел в некоторых блогах, который выглядит примерно так:

1.) Сначала инициализируйте boolean[] keys=new boolean[256];

2.) Затем для каждого полученного ключевого события просто сохраните значение в этот логический массив.

`public void keyPressed(KeyEvent ke)
{
            //storing the keyevent:true since its due to key being pressed
    keyMap[ke.getKeyCode()]=true;
    ke.consume();
}`


`public void keyReleased(KeyEvent ke)
{
            //storing the keyevent:false since its due to key being released
    keyMap[ke.getKeyCode()]=false;
    ke.consume();
}`

наконец, есть метод, который перебирает логическое значение [] и проверяет состояние ключа.

        `for(int i=0;i<keyMap.length;i++)
        {
            if(keyMap[i]==true)
            {

                           /* do some graphic tasks...*/
            }
        }`

В чем разница между двумя шаблонами?

1 Ответ

4 голосов
/ 18 декабря 2011

2-й подход позволяет одновременно нажимать более одной клавиши, обычно для обеспечения диагонального перемещения при двойном нажатии клавиши.

...