Eventos
Enviado por Murillo605 • 23 de Abril de 2015 • Tarea • 2.123 Palabras (9 Páginas) • 148 Visitas
Esta es una de las cosas que se tienen que empezar a ver antes de crear un juego (Un juego que necesite movimientos). Con esto por ejemplo podemos mover nuestro personaje con las tradicionales teclas W S A D, o tambien puede ser, para los programas de chat, para que al presionar ENTER, envie el mensaje, tambien para los accesos rapidos en las aplicaciones GUI, y lo que se les ocurra…
Empecemos…
Primero, empezaremos creando una GUI básica.
Despues importaremos la biblioteca para poder usar el KeyListener:
import java.awt.event.*;
En la linea donde declaramos la clase implementamos la interfaz KeyListener
public class Main extends JFrame implements KeyListener {
Crearemos un objeto para mover, por ejemplo, un JButton.
(No dire como crear un boton, ya que esto tenes que saberlo)
Luego declaramos 4 variables:
final int a = 40;
final int b = 40;
int y, x;
Las variables A y B definen el tamaño del boton, y las variables X e Y definen la posicion (coordenadas) del boton, nosotros lo que haremos será cambiar el valor de X e Y para que nuestro boton se vaya moviendo.
En el constructor de la clase, añaniremos una “escucha” al boton con la siguiente linea:
boton.addKeyListener(this);
Crearemos dos metodos, que no usaremos, pero que son obligatorios crearlos
public void keyReleased(KeyEvent evt) { }
public void keyTyped(KeyEvent evt) { }
Crearemos el metodo que si usaremos:
public void keyPressed(KeyEvent evt) {
}
Para capturar las teclas presionadas, usaremos un condicional switch(); de la siguiente forma:
switch(evt.getKeyCode()) {
case KeyEvent.VK_W:
y -= 1;
boton.setBounds(x, y, a, b);
break;
case KeyEvent.VK_S:
y += 1;
boton.setBounds(x, y, a, b);
break;
case KeyEvent.VK_A:
x -= 1;
boton.setBounds(x, y, a, b);
break;
case KeyEvent.VK_D:
x += 1;
boton.setBounds(x, y, a, b);
break;
}
Primero, por ejemplo en el caso de la W, le restamos 1 a Y y luego le asignamos la nueva posicion con setBounds(); pasandole las variables de posicion y de tamaño, y este, al cambiar el valor de Y, veran como el boton subira para arriba, lo mismo para A, S y D para sus correspondientes direcciones.
Bueno, como dije, esto lo pueden usar para chats, para accesos rapidos en aplicaciones, para juegos, y lo que se les ocurra.
Primero importaremos la librería de la clase:
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
Para que nuestra clase pueda usar esta interface debemos implementarla de la siguiente manera:
public class EscucharTeclas extends JFrame implements KeyListener {}
Esto nos creará tres metodos por defecto para las acciones antes dichas (presionar, escribir, soltar) sobre las teclas. Si utilizamos un IDE nos lo genera automaticamente pero sino acá dejo los tres métodos:
@Override
public void keyPressed(KeyEvent e) {}
@Override
public void keyReleased(KeyEvent e) {}
@Override
public void keyTyped(KeyEvent e) {}
Crearemos una clase que implemente esta interface y que contenga un botón:
private JButton getbAceptar() {
bAceptar = new JButton("Aceptar");
// Acá es donde se le dice que escuche a las teclas
bAceptar.addKeyListener(this);
bAceptar.setBounds(10, 10, 100, 20);
return bAceptar;
}
En cada método de los anteriores colocaremos una salida a consola de la siguiente manera:
@Override
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_ENTER) {
System.out.println("Presionó Enter!" + (char) key);
}
if (key == KeyEvent.VK_SPACE) {
System.out.println("Presionó Espacio!" + (char) key);
}
}
@Override
public void keyReleased(KeyEvent e) {
System.out.println("Soltó una tecla");
}
@Override
public void keyTyped(KeyEvent e) {
System.out.println("Escribió una tecla");
}import javax.swing.JTabbedPane;
Nuestra clase final quedaría así y con esto ya tenemos un ejemplo demasiado sencillo para entender su utilización.
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JButton;
import javax.swing.JFrame;
@SuppressWarnings("serial")
public class EscucharTeclas extends JFrame implements KeyListener {
private JButton bAceptar;
public EscucharTeclas() {
add(getbAceptar());
inicializador();
}
private void inicializador() {
setLayout(null);
setTitle("Prueba con Teclas");
setVisible(true);
setSize(300, 300);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
private JButton getbAceptar() {
bAceptar = new JButton("Aceptar");
bAceptar.addKeyListener(this);
bAceptar.setBounds(10, 10, 100, 20);
return bAceptar;
}
@Override
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_ENTER) {
System.out.println("Presionó Enter!" + (char) key);
}
if (key == KeyEvent.VK_SPACE) {
System.out.println("Presionó Espacio!" + (char) key);
}
}
@Override
public void keyReleased(KeyEvent e) {
System.out.println("Soltó
...