Ver Mensaje Individual
  #9 (permalink)  
Antiguo 29/08/2012, 14:19
alexg88
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años, 8 meses
Puntos: 344
Respuesta: Duda con eventos

Es muy sencillo por lo que no funciona y es porque al utilizar la clase KeyAdapter no he redefinido el método keyTyped, sino que he añadido uno llamado keyTiped (fíjate en la diferencia).

No da ningún error porque todos los métodos de la interfaz KeyListener están ya definidos en KeyAdapter.

El código bien:

Código Java:
Ver original
  1. public class EjemploEventos extends JFrame{
  2.    
  3.     private static String labelPrefix = "La tecla pulsada es: ";
  4.     private JLabel etiqueta;
  5.     private JPanel panel;
  6.      
  7.      //Constructor
  8.     public EjemploEventos (){
  9.     //El primer componente será una etiqueta
  10.     etiqueta = new JLabel (labelPrefix + "      ");
  11.    
  12.     //El segundo componente será un cuadro de texto
  13.     JTextField texto = new JTextField();
  14.  
  15.     //Usando KeyAdapter no necesitas redefinir todos los métodos y usamos clases anónimas
  16. texto.addKeyListener(new KeyAdapter(){
  17.  @Override
  18.  public void keyTyped (KeyEvent e)
  19.     {
  20.     etiqueta.setText(labelPrefix + e.getKeyChar());
  21.     }
  22. });    
  23.    
  24.     panel = new JPanel();
  25.     //Le añadimos un borde de dimensiones 30 x 50 x 10 x 50
  26.     panel.setBorder(BorderFactory.createEmptyBorder(30,50,10,50));
  27.    
  28.     //Los componentes se distribuirán por columnas
  29.     panel.setLayout(new GridLayout(0,1));
  30.    
  31.     //Añadimos el campo de texto y la etiqueta al contenedor
  32.     panel.add (texto);
  33.     panel.add (etiqueta);
  34.    
  35.     getContentPane().add(panel, BorderLayout.CENTER);
  36.    
  37.     }
  38.    
  39.     public static void main (String[] args)
  40.     {
  41.     try {
  42.     //Indicar Look & Feel
  43.         UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
  44.     } catch (Exception e) {}
  45.      
  46.      
  47.     EjemploEventos app = new EjemploEventos();    
  48.     app.pack();
  49.     app.setVisible(true);
  50.    
  51.    }    
  52.    
  53. }

Fíjate en la anotación @Override en el método keyTyped. En netbeans aparece un triangulo amarillo para indicar que es conveniente ponerla.

Un saludo.