[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
> <joco at kac.duf.hu>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: > kódrészlet:currentValue->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... > >
> _________________________________________ > 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
> >
> >
> > _________________________________________
> > 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