键盘轮询有什么用?

时间:2011-12-18 02:40:54

标签: java swing events awt

我正在使用Java 1.6创建一个2D图形应用程序。为了接收键盘输入,我只使用JPanel上的addKeyListener()和其中一个回调方法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();
}`

最后有一个方法循环遍历boolean []并检查键状态..

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

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

两种模式之间的区别是什么?

1 个答案:

答案 0 :(得分:4)

第二种方法允许您同时按下多个键,通常允许通过双键按下对角线移动。