[Java lista] swt automatikusan

Zsombor gzsombor at gmail.com
2009. Nov. 15., V, 19:38:44 CET


2009/11/10 Laja <laja at freemail.hu>

> Hi!
> > Már rég használtam SWT-t, de szerintem a display.asyncExec pont azt
> > jelenti, hogy nem külön szálban fog futni a végrehajtás, hanem az SWT
> > szála fogja majd végrehajtani a Runnable objektum run metódusát.
> > Én new Thread().start()-ra gondoltam, amikor az új szálat írtam.
> >
> Azt is kipróbáltam természetesen, de az se segített....
>
> > De ettől függetlenül tényleg jobb lenne, ha a problémát írnád körül :)
> >
> Hát nem nagyon tudom még jobban körülírni, de akkor megpróbálom....
> Van egy progi, amiben van egy Text mező (input néven), amibe a user
> irkálhat kódokat. Erre a beviteli mezőre van rátéve egy billentyűzet
> kezelő rész (input.addTraverseListener...), ami gyakorlatilag a
> feldolgozKod() függvényt hívja, ami kódhoz tartozó dolgokat megjeleníti.
> Ez működik is rendesen. Ha viszont azt írja be a user kódnak hogy
> "TESZT", akkor a progi megnyit egy szöveges filet, és azt olvasva annak
> minden egyes sorát mit kódot feldolgozza, azaz mindegyikre meghívja a
> feldolgozKod() metódust. Ez is működik, csak épp közben a GUI nem
> frissül. És ez utóbbi a probléma...
>
> Laja
>
>
Nem tudom közben sikerült e megoldani a problémát, annyit tudnék segíteni,
hogy elsőre kicsit furának tűnik ez a felhasználói felület - pl miért kell
egyetlen szöveg mezőt user inputra, és outputra is felhasználni, ráadásul
parancs kiadásra is, ezzel a TESZT kóddal. Szerintem mindenkinek egyszerűbb
lenne, ha lenne egy beviteli mező, egy státusz mező, meg egy "Teszt" gomb :)
 A másik, hogy a leírásodból nem tünik ki, hogy mikor hívsz a beviteli mezőn
"input.setText(ujKod)"-ot. Egyáltalán meghívod ? :) Másrészt, meg az SWT
elég érzékeny arra, hogy UI-t módosítani csak az esemény kezelő szálból
lehessen - amúgy dobálja az exceptionöket. Viszont egy hosszabb feladatot
nem érdemes az esemény kezelőben végrehajtani, hisz addig az egész felület
blokkolódni fog. Tehát, indítasz egy szálat, majd abból hívsz egy
display.asyncExec(new Runnable() { public void run () {
input.setText("ize"); } });  -t.
S nem a hosszú folyamatot próbálod meg az esemény kezelő szálban
végrehajtani mint ahogy az egyik előbbi leveledben leírtad !

ĂĽdv
 Zs
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: http://javagrund.hu/pipermail/javalist/attachments/20091115/df840bef/attachment-0001.html 


További információk a(z) Javalist levelezőlistáról