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

 

 


Tema destacado: Introducción a Git (Primera Parte)


  Mostrar Temas
Páginas: 1 [2]
11  Programación / Java / KeyListener Problema sin modificar el código en ocasiones va y viene !!! en: 19 Abril 2012, 14:56 pm
Buenas tardes expertos, amigos, compañeros o como pueda llamarlos.

Mi problema es que me estoy relacionando con la clase KeyListener de Java todo marchaba de maravilla hasta que me di cuenta que sin modificar mi codigo el programa entraba al metodo KeyPressed en algunas ocasiones y en otras no.

Espero me puedan ayudar.

De ante mano agradezco a todo aquel que siempre este interesado en ayudar a todo tipo de persona.
Código:
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.*;


public class principal extends JFrame implements KeyListener{

/**
* @param args
*/
JButton bsalir;
mipanel ob= new mipanel();
JButton blinea;
public principal()
{
this.setSize(270,360);
this.setLocation(100,100);
this.setVisible(true);
this.setTitle("Ventana 1");
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.addKeyListener(this);
this.setLayout(null);
bsalir = new JButton("Salir");
bsalir.setBounds(5, 260, 100, 40);
blinea= new JButton("DibujarLinea");
blinea.setBounds(105,260,150,40);
this.add(ob);
this.add(blinea);
this.add(bsalir);
/////////////////////////////////////
///////////////////////////////////
//////////accion de los botones////
bsalir.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
JOptionPane.showMessageDialog(null,"Chao...!");
System.exit(0);

}});
blinea.addActionListener(new ActionListener(){
public void actionPerformed (ActionEvent e)
{
ob.repintar();
}});

}//fin del construcctor


public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
principal obj= new principal();
}
public int tec=1 ;
//////////////////// metodos para implementar el teclado
public void keyPressed(KeyEvent e) {
tec = e.getKeyCode();
System.out.println("codigo"+tec);
ob.repintar();
}
public void keyReleased(KeyEvent e) {}
public void keyTyped(KeyEvent arg0) {}
///////////////////////////////////////////
}//fin de la clase principal


class mipanel extends JPanel
{
boolean linea=true;
public mipanel()
{
this.setBackground(Color.black);
this.setSize(200,200);
this.setLocation(20,20);
}
// metodo de pintar mi Panel
public void paint (Graphics g)
{
Dimension  tam = this.getSize();
    g.setColor(Color.WHITE);
    g.fillRect(0,0,tam.width,tam.height);
g.setColor(Color.red);
if (!linea)
g.drawLine(0, 0, 100, 100);
else
g.drawString("No hay una linea", 0, 100);
}
/// mi meto de repintar
public void repintar()
{
if (linea==true)
linea =false;
else
linea=true;
repaint();
}

}

de ante mano digo que ignoren el boton dibujar linea que ese si me llama al metodo repintar;
Mi objetivo es que si toco las teclas arriba, abajo, derecha e izquierda tambien llamen al metodo repintar como se puede ver en la linea de codigo siguiente :
Citar
public void keyPressed(KeyEvent e) {
       tec = e.getKeyCode();
       System.out.println("codigo"+tec);
       ob.repintar();
   }
   public void keyReleased(KeyEvent e) {}
   public void keyTyped(KeyEvent arg0) {}

Gracias por su tiempo
Páginas: 1 [2]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines