Depurar Eventos AWT

Antes del nuevo mecanismo de eventos del SWT presentado en el JDK 1.1 los eventos eran recibidos por un componente como un TextField, y propagado hacia arriba a sus componentes padre. Esto significa que podría simplemente añadir algún código de diagnóstico a los método handleEvent o action del componente para monitorizar los eventos que le han llegado.

Con la presentación del JDK 1.1 y el nuevo sistema de la cola de eventos, los eventos son enviados a una cola de eventos en lugar de al propio componente. Los eventos son despachados desde la cola de Eventos del Sistema a los oyentes de eventos que se han registrado para ser notificados cuando se despache un evento para ese objeto.


Usar AWTEventListener

Podemo suar un AWTEventListener para monitorizar los eventos AWT desde la cola de eventos del sistema. Este oyente toma una máscada de evento construida desde una operación OR de los AWTEvent que queremos monitorizar. Para obtener una simple lista de los eventos AWTEvent, usamos el comando javap -public java.awt.AWTEvent. Este ejemplo sigue la pista a los eventos de foco y del ratón.

Nota: No se debe utilizar AWTEventListener en un producto para la venta, ya que degrada el rendimiento del sistema.
//EventTest.java
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class EventTest extends JFrame {

  public EventTest() {
    JButton jb1=new JButton("hello");
    getContentPane().add(jb1);

    //AWTEventListener
    getToolkit().addAWTEventListener(
      new AWTEventListener() {
        public void eventDispatched(AWTEvent e) {
          System.out.println(e+"\n");
        }
      }, AWTEvent.MOUSE_EVENT_MASK |
           AWTEvent.FOCUS_EVENT_MASK
       );
  }

  public static void main (String args[]) {

    EventTest et=new EventTest();
    et.setSize(300,300);
    et.pack();
    et.show();
  }
}

Ozito