Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
keyListener en varios paneles (Problema)
robi Sin conexión
mata tigres
*

Mensajes: 11
Registro en: Oct 2011
Reputación: 0
Mensaje: #1
keyListener en varios paneles (Problema)
Profesor aqui le adjuntamos el ejemplo sencillo con el problema que tenemos con las ventanas que no nos agarran el keylistener que le mostramos en clase.!


Archivo(s) adjuntos
.gz  pruebaKey.tar.gz (Tamaño: 3,57 KB / Descargas: 1)
24-02-2012 01:50 PM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
demian Sin conexión
Administrator
*******

Mensajes: 1.808
Registro en: Jun 2010
Reputación: 0
Mensaje: #2
RE: keyListener en varios paneles (Problema)
En lugar de hacer esto desde el panel Foo:

Código:
this.addKeyListener(this);

Prueben con esto:

Código:
KeyboardFocusManager.getCurrentKeyboardFocusManager(). //
        addKeyEventDispatcher(new KeyEventDispatcher() {
          public boolean dispatchKeyEvent(KeyEvent evt) {
            switch (evt.getID()) {
              case KeyEvent.KEY_PRESSED :
                System.err.println("pressed: " + evt.getKeyChar());
// ----------------------------------------
// MANEJAR EVENTO AQUÍ
// ----------------------------------------
                break;

              case KeyEvent.KEY_RELEASED :
                System.err.println("released: " + evt.getKeyChar());
// ----------------------------------------
// MANEJAR EVENTO AQUÍ
// ----------------------------------------
                break;

              default :
                break;
            }

            return true;
          }
        });

Es decir, no usan la interfaz KeyListener sino que manejan los eventos por medio de un KeyEventDispatcher.

En general, eso hace que el panel Foo reciba todos los eventos de teclado independientemente de quien tenga el foco. Cuidado que si tienen varios paneles o controles que manejan teclado entonces tienen que discriminar ustedes quién responde a que evento.

Revísenlo y me comentan que tal les va, yo estoy usando esa estrategia en algunos de mis demos y me ha ido bien.

En particular, creo que mi pacman está usando esta clase:

http://code.google.com/p/foo-org-ve/sour...nager.java

Pero ahora no estoy 100% seguro. Revísenla, quizá les sirva.

[Imagen: dmi-1.jpg]
25-02-2012 08:02 PM
Visita su sitio web Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Enviar respuesta 


Salto de foro:


Usuario(s) navegando en este tema: 1 invitado(s)