Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Swing, thread, invokeLater

[es] :: Java :: Swing, thread, invokeLater

[ Pregleda: 438 | Odgovora: 4 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

_prompt

Član broj: 64725
Poruke: 30
*.adsl-1.sezampro.yu.



Profil

icon Swing, thread, invokeLater25.02.2008. u 20:16

Dakle, potrebno mi je da preko dugmeta iz action listenera startujem thread/runnable
koji dok bude radio da lepo radi sa kontrolama, da popuni textfield, table i sl...
Sad, sve je to ok, jasna mi je prica sa event dispatcher-om, procitao sam dosta
o tome, probao sve moguce primere ali jednostavno nema sanse da proradi.
Desi se ono suprotno, ili se dugme zamrzne ili ne ispisuje sve odjednom pa tek na
kraju izbaci sve sto ima u text area-u.

Code:

public void search(String url, String[] tags) {
   // metoda koja treba da se pozove da ispise na kontrolu
}
...
// u listeneru
public void actionPerformed(ActionEvent arg0) {
   Thread worker = new Thread() {
      public void run() {
         SwingUtilities.invokeLater(new Runnable() {
         public void run() {
                 // ovde search pozivam nekoliko puta
             }
         }
     }
   }
   worker.start();
}

Ovako je u sustini poslednja varijanta koju sam pokusao, kao kombinacija invoka i thread-a. Mislio sam
da mi thread uopste nece biti potreban vec samo runnable. Mozda je do actionPerformed, jer kako
pise na sunovom sajtu on se 'invokuje' u event-dispatching thread-u pa ne treba pozivati invoke
u njemu. Onaj swing worker ne bih mogao da koristim jer je za 1.5. Koristim jericho
html parser i njegove metode pozivam u search-u, pa mi je palo na pamet mozda nije thread safe.
Ako neko ima slicna iskustva...help

25.02.2008. u 20:16 

Dejan Lozanovic
Senior Software Developer - Team Leader , www.limores..
Beograd

Član broj: 691
Poruke: 1992
*.dynamic.sbb.co.yu.

Jabber: null@elitesecurity.org
Sajt: www.limores.net


Profil

icon Re: Swing, thread, invokeLater26.02.2008. u 12:00
Cekaj za koju verziju jave to moras da radis ? Evo ti backport swingworkera https://swingworker.dev.java.net/
"E tako se to radi , kratko ali j.e.b.i.t.a.c.n.o"
Degojs car - http://www.elitesecurity.org/t306994
26.02.2008. u 12:00 

hyle
Perica Milošević
Software Architect - Sportska kladionica Mozzart
Belgrade

Moderator
Član broj: 30030
Poruke: 134
77.247.200.*

ICQ: 58111799
Sajt: www.linkedin.com/in/peric..


Profil

icon Re: Swing, thread, invokeLater26.02.2008. u 14:25
Ma prosta je stvar, poštuj ova dva pravila:
1. Dugačku operaciju obavljaj u posebnom Threadu
2. Ažuriranje GUI-ja radi iz EventDispatchThreada

U tvoj slučaju bi to izgledalo ovako:
Code:

   Thread worker = new Thread() {
      public void run() {

         // ovde radis dugacku operaciju

         SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                 // ovde azuriras sve GUI kontrole rezultatima tvoje operacije
            }
         }
     }
   }
   worker.start();
26.02.2008. u 14:25 

Dejan Lozanovic
Senior Software Developer - Team Leader , www.limores..
Beograd

Član broj: 691
Poruke: 1992
*.dynamic.sbb.co.yu.

Jabber: null@elitesecurity.org
Sajt: www.limores.net


Profil

icon Re: Swing, thread, invokeLater26.02.2008. u 14:51
Ne
Citat:
hyle: Ma prosta je stvar, poštuj ova dva pravila:
1. Dugačku operaciju obavljaj u posebnom Threadu
2. Ažuriranje GUI-ja radi iz EventDispatchThreada


Nema potrebe za tim, Swingworker je backportovan za 1.5
"E tako se to radi , kratko ali j.e.b.i.t.a.c.n.o"
Degojs car - http://www.elitesecurity.org/t306994
26.02.2008. u 14:51 

_prompt

Član broj: 64725
Poruke: 30
*.adsl-4.sezampro.yu.



Profil

icon Re: Swing, thread, invokeLater05.03.2008. u 10:46
Prebacen je program na .NET...
Meni je bilo potrebno da u toku te dugacke operacije menjam
propertije kontrola. Pogledacu definitivno swingworker cim
budem imao vremena jer trenutno ga imam uzasno malo.
Hvala svima u svakom slucaju
05.03.2008. u 10:46 

[es] :: Java :: Swing, thread, invokeLater

[ Pregleda: 438 | Odgovora: 4 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.