2010-07-22 26 views

Respuesta

2

Puede usar Thread.yield(), que es la contraparte de java para ceder voluntariamente el control de los procesadores.

+6

'Thread.yield()' no lo haría ayuda si el código de llamada está en el hilo de la GUI, ya que los eventos se envían en el mismo hilo. – amotzg

0

Se denomina bucle de eventos. Este article muestra cómo se manejan los eventos en los componentes de la interfaz de usuario en Java.

1

Puede usar EventQueue.invokeLater() para anexar un Runnable después de todos los eventos pendientes. Esto tiene un resultado similar al de C# DoEvents() que viene antes del código que ingresó dentro del método Runnable.run().

See Java documentation for EventQueue.

Por ejemplo, si desea que todos GUI controla a perder el enfoque y sus eventos de foco perdida para ser ejecutar, puede utilizar el siguiente código:

@Override 
public void windowClosing(WindowEvent e){ 
    // Clear the focus to allow last changes to be noted. 
    KeyboardFocusManager.getCurrentKeyboardFocusManager().clearGlobalFocusOwner(); 
    // We want to let other events (e.g. lost focus) run before we start closing. 
    EventQueue.invokeLater(new Runnable() { 
     @Override public void run() { 
      // Do actual closing... 
     } 
    }); 
}