martes, 14 de abril de 2009

Movimiento de gráficos mediante teclas en Java

La explicación del movimiento de un gráfico en Java mediante la pulsación de teclas está basada en este caso en un ejemplo similar al utilizado en el artículo "Movimiento de gráficos mediante botones en Java", por lo que debe utilizarse esa otra explicación para conocer los atributos y métodos creados en el panel que se ha utilizado para la bola que se va a mover.

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;
       }
    }      

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.

1 comentario:

 

Contador de visitas