我正在使用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...*/
}
}`
两种模式之间的区别是什么?
答案 0 :(得分:4)
第二种方法允许您同时按下多个键,通常允许通过双键按下对角线移动。