Descarga del ejemplo completo.
En la ventana principal se debe realizar el control de las teclas pulsadas. Para ello se declara el controlador de eventos de pulsaciones del teclado. Una de las formas más sencillas es a través del menú contextual de la ventana: Eventos > Key > KeyPressed. Es importante asegurarse que se hace sobre la ventana y no sobre un componente de ella ya que se asignaría el control del teclado sólo a ese componente.
Este tipo de evento (keyPressed) se repite mientras se mantenga pulsada la tecla. Si se desea un evento que sólo sea llamado con cada pulsación de la tecla se debe usar keyReleased.
Otra forma de asignar código al evento es mediate la ventana Eventos de la parte derecha:
Al asignar un controlador a uno de esos eventos se abre el editor de código donde se deben escribir las sentencias que se ejecutarán al pulsar una tecla.
private void formKeyPressed(java.awt.event.KeyEvent evt)
{
switch(evt.getKeyCode())
{
case KeyEvent.VK_RIGHT:
tablero1.moverDerecha();
break;
case KeyEvent.VK_LEFT:
tablero1.moverIzquierda();
break;
case KeyEvent.VK_UP:
tablero1.moverArriba();
break;
case KeyEvent.VK_DOWN:
tablero1.moverAbajo();
break;
}
}
{
switch(evt.getKeyCode())
{
case KeyEvent.VK_RIGHT:
tablero1.moverDerecha();
break;
case KeyEvent.VK_LEFT:
tablero1.moverIzquierda();
break;
case KeyEvent.VK_UP:
tablero1.moverArriba();
break;
case KeyEvent.VK_DOWN:
tablero1.moverAbajo();
break;
}
}
El parámetro evt que aparece permite distinguir qué tecla se ha pulsado, a través de su método getKeyCode(). Este método retorna un valor entero con el código de la tecla que se ha pulsado. Si se conoce el valor del código de la tecla deseada se puede hacer una comparación directamente con el valor numérico. Es más cómodo utilizar las contantes que ya están declaradas para los códigos de teclas (KeyEvent.VK_nombreTecla). Para conocer los nombres de teclas que existen, en NetBeans se tiene la ventaja de que al escribir KeyEvent seguido del punto aparecen todas las constantes y métodos que tiene definidas.
En este ejempo se ha utilizado la sentencia switch para realizar las comparaciones, pero es posible hacer cualquier otro tipo de comparación como if o utilizarlo en bucles.
Muchísimas gracias!!!
ResponderEliminar