elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  No me funcionan los eventos de teclado y compila bien, ¿porque?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: No me funcionan los eventos de teclado y compila bien, ¿porque?  (Leído 2,935 veces)
thehiphapper


Desconectado Desconectado

Mensajes: 464



Ver Perfil
No me funcionan los eventos de teclado y compila bien, ¿porque?
« en: 17 Mayo 2013, 13:23 pm »

Tengo 3 clases creadas, la idea es mover una imagen en un JFrame usando las flechas de teclado, compila sin error, muestra la imagen en el JFrame, pero al pulsar las teclas de dirección del teclado, la imagen no se mueve, ¿que tendría que cambiar?Gracias.

Clase juegoInicio:

Código:
import javax.swing.JFrame;


public class JuegoInicio extends JFrame
{
   

    public JuegoInicio()
    {
    add(new Tablero());
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setSize(800, 600);
    setLocationRelativeTo(null);
    setTitle("R-Type");
    setResizable(false);
    setVisible(true);
    }

   
    public void main(String[] args)
    {
       new JuegoInicio();
    }
}

Clase Tablero:

Código:
import java.awt.Image;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.Color;
import javax.swing.ImageIcon;
import java.awt.Toolkit;
import javax.swing.JPanel;
import java.awt.Graphics2D;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.Timer;
import java.awt.event.KeyListener;
import java.awt.event.ActionListener;
   
    public class Tablero extends JPanel implements ActionListener
   
    {
     private Timer timer;
     private Craft craft;
   
    public Tablero()
    {
    addKeyListener(new TAdapter());
    setFocusable(true);
    setBackground(Color.BLACK);
    setDoubleBuffered(true);
    craft = new Craft();
    timer = new Timer(5, this);
    timer.start();
    }
   
    public void paint(Graphics g)
    {
    super.paint(g);
    Graphics2D g2d=(Graphics2D)g;
    g2d.drawImage(craft.getImage(), craft.getX() ,getY(), this);
   
    Toolkit.getDefaultToolkit().sync();
    g.dispose();
    }
   
    public void actionPerformed(ActionEvent e)
    {
    craft.move();
    repaint(); //vuelve a ejecutar el metodo paint
    }
   
   
    public class TAdapter extends KeyAdapter {
        public void KeyReleased(KeyEvent e) {
            craft.keyReleased(e);
        }
        public void KeyPressed(KeyEvent e) {
            craft.keyPressed(e);
        }
    }
}

Clase Craft:

Código:
import java.awt.event.ActionListener;
import javax.swing.JPanel;
import java.awt.Image;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.Color;
import javax.swing.ImageIcon;
import java.awt.Toolkit;
import javax.swing.JPanel;
import java.awt.Graphics2D;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.KeyAdapter;


public class Craft
{
    private String craft = "Logo.jpg";//ruta donde esta la imagen que queremos pintar en pantalla
    private int dx;//desplazamiento x
    private int dy;//desplazamiento y
    private int x;
    private int y;
    private Image image;//objeto que va a contener la imagen

    public Craft()
    {
    ImageIcon ii = new ImageIcon(this.getClass().getResource(craft));//extrae la imagen que tenemos guardada
    image = ii.getImage();//almacena la imagen en un objeto
    x=40;
    y=60;
   
    }
public void move()//cuando se detecte una pulsación  de tecla se llama a este metodo
{
x += dx;//desplazamiento x
y += dy;
}
public int getX()
{
return x;
}
public int getY()
{
return y;
}
public Image getImage()
{
return image;
}
public void keyPressed(KeyEvent e)

    {
        int key = e.getKeyCode();
       
        if(key == KeyEvent.VK_LEFT)
            {
            dx = -1;
            }
        if(key == KeyEvent.VK_RIGHT)
            {
            dy = 1;
            }
        if(key == KeyEvent.VK_UP)
            {
            dx = -1;
            }
        if(key == KeyEvent.VK_DOWN)
            {
            dy = 1;
            }
    }
public void keyReleased(KeyEvent e)//para dejar de mover nuestra imagen al soltar la tecla, se hace en 2 metodos separados porque si no al soltar una de las teclas la nave se queda parada.
    {
    int key = e.getKeyCode();
    if(key == KeyEvent.VK_LEFT)
        {
        dx=0;
        }
        if(key == KeyEvent.VK_RIGHT)
        {
        dy=0;
        }
        if(key == KeyEvent.VK_UP)
        {
        dx=0;
        }
        if(key == KeyEvent.VK_DOWN)
        {
        dy=0;
        }
    }
   

}


En línea

La droga quimica extrapeligrosa,
causante de la perdida de vidas hermosas,
es una plaga mundial no cualquier cosa,
un mal de sangre y el diablo se lo goza.
RyogiShiki


Desconectado Desconectado

Mensajes: 745


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: No me funcionan los eventos de teclado y compila bien, ¿porque?
« Respuesta #1 en: 18 Mayo 2013, 20:50 pm »

Hace unos días respondí esto mismo.  Puedes referirte a mi respuesta en el siguiente tema: https://foro.elhacker.net/java/ayuda_eventos_de_teclado_no_es_escuchado_en_jpanel-t389553.0.html;msg1850574#msg1850574


En línea

thehiphapper


Desconectado Desconectado

Mensajes: 464



Ver Perfil
Re: No me funcionan los eventos de teclado y compila bien, ¿porque?
« Respuesta #2 en: 19 Mayo 2013, 16:49 pm »

Gracias, al final era un comentario, que era muy largo y me estaba dando problemas.
En línea

La droga quimica extrapeligrosa,
causante de la perdida de vidas hermosas,
es una plaga mundial no cualquier cosa,
un mal de sangre y el diablo se lo goza.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Keylogger sin Eventos del teclado
Programación Visual Basic
hackper 1 2,067 Último mensaje 14 Diciembre 2005, 21:48 pm
por Slasher-K
Compila bien, pero no ejecuta !! Solucionado
Java
Vingilot 4 3,964 Último mensaje 8 Enero 2008, 15:20 pm
por Vingilot
Calcular mcd. Compila bien pero no corre « 1 2 3 »
Programación C/C++
jairogon 24 15,848 Último mensaje 3 Julio 2010, 03:09 am
por nicolas_cof
compila y ejecuta bien, pero me muestra un caracter raro
Programación C/C++
pedroarcego 7 3,939 Último mensaje 7 Septiembre 2010, 11:28 am
por Garfield07
[C] ayuda, programa compila bien pero no cumple la funcion (solucionado)
Programación C/C++
xiruko 6 3,483 Último mensaje 15 Abril 2012, 23:48 pm
por xiruko
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines