[Java lista] progressbar

Zsombor gzsombor at gmail.com
2006. Dec. 28., Cs, 18:30:29 CET


On 12/28/06, Jozsef Tabanyi <joco at kac.duf.hu> wrote:
>
> Szia,
>
> Igen.
>
> Egy GUI esemeny hatasara indits egy uj szalat,
> amiben elvegzed a soap kommunikaciot, vagy akarmilyen
> mas viszonylag hosszu ideig tarto muveletet.
> Ebben a szalban idonkent leptetheted a progressbart is.
>
> De ha elfogacc egy jotanacsot, akkor most tartassz egy
> kis szunetet es elolvasol egy java konyvet, mert a
> szalkezeles is tud meglepeteseket okozni.
>
> joco



De azért jóval egyszerübb mint más alacsonyabb nyelvekben, ahol nincs erre
alapbĂłl nyelvi konstrukciĂł.
Amugy csak annyi trükköt kell csinálni, hogy a külön szálból nem közvetlenül
módosítod az értéket, hanem
egy
SwingUtilities.invokeLater(new Runnable() {
 public void run() {
   progressBar.setValue(newValue);
 }
});
hivással. Ugyanis azon kivül, hogy az esemény kezelő szálban nem szabad
sok/lassú munkát végezni, a másik szabály, hogy ahogy a legtöbb UI könyvtár,
Ăşgy a Swing sem thread safe, azaz, Swing komponenst mĂłdosĂ­tani meg az
esemény kezelő szálból szabad csak. Illetve, ekkor biztosított, hogy a UI
megfelelően frissitődik. Az SWT-ben erre explicit ellenőrzés van, míg a
swingben a programozó jóindulatára van bízva, és erőssen javasolva. S ez a
SwingUtilities.invokeLater és invokeAndWait metódus meg azt csinálja, hogy a
megadott kódrészletet az esemény kezelő szálban hajt végre - az invokeLater
azonnal visszatér, míg az invokeAndWait megvárja, amig ez sikerül.

ĂĽdv
 Zsombor




Jozsef Tabanyi
> mailto:jozsef at tabanyi.hu
> http://www.tabanyi.hu
> On Thu, 28 Dec 2006, [ISO-8859-2] MaglĂłdszki Viktor wrote:
>
> >
> > hát akkor tuti ez a bajmondjuk az megoldás lehet, hogy irok egy class-t
> ami implementálja a runnable-t és ott oldom meg a soap-ot ?van egy csomó
> bemenő paraméter mondjuk de max átadom azt kész...ott a szálban léptessem a
> bar-t ? akkor már menni fog?-- Eredeti üzenet --Feladó: Jozsef Tabanyi
> &lt;joco at kac.duf.hu&gt;Címzett: javalist at javagrund.huMásolat: Elküldve:
> 15:35TĂ©ma: Re: [Java lista] progressbarSzia,  Szerintem az a hiba, hogy a
> sokaig tarto SOAP muveletet az esemenykezelo szalban hajtod vegre, pl egy
> gombnyomas hatasara. Ilyenkor a GUI frissitese addig blokkolodik, amig veget
> nem er a folyamat.  Az swing esemenykezelo szalban soha ne legyen 1 mp-nel
> hosszabb muvelet, hanem csak indits egy kulon szalat a hosszu folyamatnak es
> azzonnal add vissza a vezerlest a swingnek.  joco  Jozsef Tabanyi mailto:
> jozsef at tabanyi.hu http://www.tabanyi.hu On Thu, 28 Dec 2006, [ISO-8859-2]
> Maglódszki Viktor wrote:  &gt; kódrészlet:currentValue-&gt;lekérdezi az
> aktuális helyzetetprogressBar.setValue(currentValue+1);ennyit csinálok
> annak érdekében, hogy lépjen a bar (ezekszerint kevés)debug-al végigmentem
> ezen és mindig megvan az uj érték szóval nem áll egyhelyben a
> progressbarSOAP-on keresztüli művleteket mutatja, hogy mennyi van kész
> szóval igen a felhasználó igencsak észreveszi..ha direkt olyat csinálok ami
> megállitja a progit akkor odaugrik szépen a bar ahol épp tartott és közli a
> hibaüzitde ha minden rendben zajlik akkor is jó lenne látnia épp hol
> tart...szálkezelés?nem akarom túl bonyolitani a soap modul már kész teszi a
> dolgát nem szeretnék most szállakat belekevernicsak annyi, hogy amikor én
> azt mondom, hogy lépj akkor lép 1-et a bar... &gt; &gt;
> _________________________________________ &gt; Hírkereső TOP50 hír -
> Bulvárhírek, sztárpletykák és a nap történései itt: KLIKK IDE! -
> http://www.hirkereso.hu/top50&gt;  _______________________________________________ Javalist mailing list
> Javalist at javagrund.hu http://javagrund.hu/mailman/listinfo/javalist
> >
> >
> > _________________________________________
> > Hírkereső TOP50 hír - Bulvárhírek, sztárpletykák és a nap történései
> itt: KLIKK IDE! - http://www.hirkereso.hu/top50
> >
>
> _______________________________________________
> Javalist mailing list
> Javalist at javagrund.hu
> http://javagrund.hu/mailman/listinfo/javalist
>
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: http://javagrund.hu/pipermail/javalist/attachments/20061228/99e1a270/attachment.html 


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