Eventos de teclado
Viruz Blog :: Programación en General :: Java :: Básicos
Página 1 de 1.
Eventos de teclado
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:
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.
Autor: Viruz
Enlace: Evento de teclado en Java
- Ratón.
- Ventana.
- Componentes gráficos.
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?[Tienes que estar registrado y conectado para ver esa imagen]
- 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.
- 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().
- En la contra parte else pintaremos pelotas del mismo color para que vayan tapando los recorridos de las diferentes pelotas.
- 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.
- Ya dentro del ciclo solo queda asignar las teclas que le corresponderán a cada pelota con la clase KeyEvent.
- 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
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
Descarga el Código
Eventos de Teclado
Autor: Viruz
Enlace: Evento de teclado en Java
Viruz Blog :: Programación en General :: Java :: Básicos
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.
|
|