Viruz Blog
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

Eventos de teclado

Ir abajo

Eventos de teclado Empty Eventos de teclado

Mensaje  Admin (Viruz) Jue Dic 20, 2012 4:40 am

Como a lo largo de todos los programas otorgados en Viruz Blog se han manejado diversos tipos de eventos como los que se en listan a continuación:

  • Ratón.
  • Ventana.
  • Componentes gráficos.
Pero falta conocer uno de los más importantes en lo que a la programación se refiere y estos son los de teclado.

Estos utilizan la clase KeyEvent y junto con una clase adaptadora (KeyAdapter) podemos definir el método que ocuparemos, el cual será keyPressed(). A continuación veremos como funciona este evento y sobre la aplicación se verá como mover 2 pelotas en 4 direcciones diferentes (izquierda, derecha, arriba y abajo) con diferentes teclas.

Imagen
[Tienes que estar registrado y conectado para ver esa imagen]
¿Como funciona el Programa?

  1. Declaramos 4 variables que serán las posiciones iniciales de las pelotas (2 en X y 2 en Y) en el método paint() las pintamos del color que sea del agrado y con el método fillOval() dibujamos las pelotitas con una ubicación inicial.
  2. Dentro de una condicional if() se hace uso de una bandera, esta cambiará siempre y cuando una pelota se haya cambiado de posición y lo sabremos mediante el ciclo for().
  3. En la contra parte else pintaremos pelotas del mismo color para que vayan tapando los recorridos de las diferentes pelotas.
  4. Con lo que respecta al evento de teclado se hace dentro de un ciclo switch - case el cual con el método getKeyCode() obtenemos la tecla oprimida.
  5. Ya dentro del ciclo solo queda asignar las teclas que le corresponderán a cada pelota con la clase KeyEvent.
  6. Por medio de otro ciclo if() se indica el máximo de los lados de la ventana, esto quiere decir hasta donde se podrán mover si se desea mas rango es cuestión de aumentar el número dentro del ciclo y debajo de él.
Código

Clase Main
public class Main {
public static void main(String []args) {
Teclado t =new Teclado();
t.setLocationRelativeTo(null);
}
}

Clase Teclado

import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Teclado extends Frame {
private int x;
private int y;
private Label lugar;
private int x1;
private int y1;
private boolean bandera=false;

public Teclado() {
super("Viruz Blog: Eventos de Teclado");
setSize(400,400);
setBackground(Color.WHITE);
x=100;
y=100;
x1=200;
y1=200;
addEventos();
addComponentes();
setVisible(true);
}


@Override
public void paint(Graphics g) {
if (bandera) {
g.setColor(Color.RED);
g.fillOval(x,y, 23, 23);

g.setColor(Color.BLUE);
g.fillOval(x1, y1, 23, 23);

for (int i = 0; i < 100000000; i++);
bandera = false;
repaint();
} else {
//ocultar las pelotas grandes
g.setColor(Color.WHITE);
g.fillOval(x , y , 20, 20);
g.fillOval(x1, y1, 20, 20);

//pintar las pelotas normales
g.setColor(Color.RED);
g.fillOval(x, y, 20, 20);

g.setColor(Color.BLUE);
g.fillOval(x1, y1, 20, 20);
}
}

private void addEventos() {
//Eventos de Ventana
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});

//Eventos de teclado
addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
int codigoTecla = e.getKeyCode();
switch (codigoTecla) {
case KeyEvent.VK_UP:
y-=5;
if (y<25)
y=25;
break;
case KeyEvent.VK_DOWN:
y+=5;
if (y>255)
y=255;
break;
case KeyEvent.VK_LEFT:
x-=5;
if (x<0)
x=0;
break;
case KeyEvent.VK_RIGHT:
x+=5;
if (x>280)
x=280;
}
int codigoTecla2 = e.getKeyCode();
switch (codigoTecla2) {
case KeyEvent.VK_W:
y1-=5;
if (y1<25)
y1=25;
break;
case KeyEvent.VK_X:
y1+=5;
if (y1>255)
y1=255;
break;
case KeyEvent.VK_A:
x1-=5;
if (x1<0)
x1=0;
break;
case KeyEvent.VK_D:
x1+=5;
if (x1>280)
x1=280;
}
int codigoTecla3 = e.getKeyCode();
switch (codigoTecla3) {
case KeyEvent.VK_ENTER:
bandera=true;
break;
}
lugar.setText("Ubicacion de la pelota "+x+","+y+" y pelota 2 "+x1+","+y1);
repaint();
}
});
}

private void addComponentes() {
lugar = new Label();
lugar.setText("Ubicacion de la pelota "+x+","+y+" y pelota 2 "+x1+","+y1);
add(lugar, BorderLayout.SOUTH);
}
}


Vídeo



Descarga el Código
Eventos de Teclado

Autor: Viruz study
Enlace: Evento de teclado en Java
Admin (Viruz)
Admin (Viruz)
Admin

Mensajes : 148
Fecha de inscripción : 23/09/2012
Edad : 35
Localización : Desktop

https://viruz.foroactivo.mx

Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.