[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