21 Şubat 2020 Cuma

Swing SecondaryLoop Arayüzü

Giriş
Şu satırı dahil ederiz
import java.awt.SecondaryLoop;
GUI tarafından başlatılan thread'in bitmesini beklerken "message pump" mekanizmasının halen çalışabilmesini sağlar. Böylece GUI bloke olmaz. Açıklaması şöyle.
If you are using JDK7, you can use the SecondaryLoop interface. An instance of this interface can be created through the EventQueue.createSecondaryLoop method
Aslında bu yöntem yeni değil. Modal dialog'lar bu yöntemi zaten kullanıyorlar. Açıklaması şöyle.
That SecondaryLoop feature allows to block futher code execution in EDT thread without causing the UI to stuck. It is basically the same what modal JDialog does when opened within EDT.
Kullanım
GUI thread'i bir Worker Thread başlatır ve loop.enter() çağrısı ile bekler. Şöyle yaparız
worker.start();
loop.enter();
Worker thread ise işini bitirdikten sonra loop.exit() çağrısı çıkar. Şöyle yaparız
public void run() {
  ...
  loop.exit ();
}
constructor
Şöyle yaparız.
SecondaryLoop loop = Toolkit.getDefaultToolkit()
    .getSystemEventQueue().createSecondaryLoop();
enter metodu
Açıklaması şöyle.
This method can be called by any thread including the event dispatch thread. This thread will be blocked until the exit() method is called or the loop is terminated. A new secondary loop will be created on the event dispatch thread for dispatching events in either case.

Hiç yorum yok:

Yorum Gönder