Я делаю приложение для 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...*/
}
}`
В чем разница между двумя шаблонами?