Foros del Web » Programación para mayores de 30 ;) » Java »

No puedo usar KeyListener (mover objeto G) :(

Estas en el tema de No puedo usar KeyListener (mover objeto G) :( en el foro de Java en Foros del Web. Hola que tal, hace unos días empece a ver java y bueno me tope con esto que es medio tonto pero no me sale jaja. ...
  #1 (permalink)  
Antiguo 10/10/2011, 23:45
 
Fecha de Ingreso: octubre-2009
Mensajes: 84
Antigüedad: 14 años, 6 meses
Puntos: 0
No puedo usar KeyListener (mover objeto G) :(

Hola que tal, hace unos días empece a ver java y bueno me tope con esto que es medio tonto pero no me sale jaja.

Quiero mover un objeto Graphics g.

Tengo 3 clases.


Mi main
Código:
public class lavivorita {


    public static void main(String[] args) {
        ventana v = new ventana();
    }

}
Mi ventana

Código:
import javax.swing.JFrame;


public class ventana extends JFrame {


    public ventana () {
        super("Graficos");
        this.setSize(405,408);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        definirGraficos();
        this.setResizable(false);
        this.setVisible(true);
    }



    public void definirGraficos() {

        lista p = new lista ();
        add(p);
    }


}

hasta todo bien, y ahora:

Mi clase de gráficos

Código:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JPanel;


public class lista extends JPanel implements KeyListener {

    public lista() {
        setSize(405,408);
        this.addKeyListener(this);
    }

    int x=202,y=202;
    public void paintComponent (Graphics g) {
        super.paintComponent(g);
        g.setColor(Color.BLACK);
        g.fillRect(0, 0, 400, 376);

        g.setColor(Color.WHITE);
        g.drawLine(400,25,0,25);
        g.drawLine(400,50,0,50);
        g.drawLine(400,75,0,75);
        g.drawLine(400,100,0,100);
        g.drawLine(400,125,0,125);
        g.drawLine(400,150,0,150);
        g.drawLine(400,175,0,175);
        g.drawLine(400,200,0,200);
        g.drawLine(400,225,0,225);
        g.drawLine(400,250,0,250);
        g.drawLine(400,275,0,275);
        g.drawLine(400,300,0,300);
        g.drawLine(400,325,0,325);
        g.drawLine(400,350,0,350);

        g.drawLine( 25, 0, 25, 400 );
        g.drawLine( 50, 0, 50, 400 );
        g.drawLine( 75, 0, 75, 400 );
        g.drawLine( 100, 0, 100, 400 );
        g.drawLine( 125, 0, 125, 400 );
        g.drawLine( 150, 0, 150, 400 );
        g.drawLine( 175, 0, 175, 400 );
        g.drawLine( 200, 0, 200, 400 );
        g.drawLine( 225, 0, 225, 400 );
        g.drawLine( 250, 0, 250, 400 );
        g.drawLine( 275, 0, 275, 400 );
        g.drawLine( 300, 0, 300, 400 );
        g.drawLine( 325, 0, 325, 400 );
        g.drawLine( 350, 0, 350, 400 );
        g.drawLine( 375, 0, 375, 400 );



        g.setColor(Color.red);
        g.fillRect(x, y, 22, 22);

    }
    


    public void keyTyped(KeyEvent e) { //Cuando se preciona una tecla y se mantiene precionada


    }

    public void keyPressed(KeyEvent e) {//Cuando se suelta la tecla

        if(e.getKeyCode()==KeyEvent.VK_UP){
            y+=3;
            x+=3;
            this.repaint();
        }
                     

            
    }

    public void keyReleased(KeyEvent e) { //La primera ves que se preciona

    }




    }

Lo único que hago es decirle que al presionar arriba me modifique X, Y para que se mueva el objeto, nada mas :(

Ayudaa
  #2 (permalink)  
Antiguo 11/10/2011, 04:29
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: No puedo usar KeyListener (mover objeto G) :(

Mira a ver si es cosa del tipo de evento. Quita el if de forma que aprietes la tecla que aprietes se mueva. De esta forma podrás ver si es cosa del if (quizás el getKeyCode() no sea VK_UP) o si hay algún otro problema.

Prueba también a poner todo ese código en el método paint(Graphcis), no en el paintComponent(Graphics).

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 11/10/2011, 06:31
 
Fecha de Ingreso: octubre-2009
Mensajes: 84
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: No puedo usar KeyListener (mover objeto G) :(

Bueno encontre el problema pero no se como solucionarlo


Es que el KeyListener no esta escuchando al método paintComponent, me di cuenta porque emule hacer una ventana de chat y tuve que poner

texto.addKeyListener(this); (Texto se llama el objeto JTextField)

Claramente dice que texto escuche las Letras que presiono.

Pero como hago para que paintComponent escuche al KeyListener?

Saludo


Edito: Listo el KeyListener simplemente se agrega en la class ventana, en la parte que dice

public void definirGraficos() {

lista p = new lista ();
this.addKeyListener(p);
add(p);
}

Saludos

Última edición por martin0290; 11/10/2011 a las 06:59
  #4 (permalink)  
Antiguo 11/10/2011, 08:52
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: No puedo usar KeyListener (mover objeto G) :(

Intenta añadiendo el keylistener al panel que tiene los gráficos, no a la ventana. Aunque en el código del primer post ya lo tenías así....

Se bueno.
__________________
Apuntes Java
Wiki de Programación

Etiquetas: keylistener, objeto, usar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:37.