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

Swing, thread, invokeLater

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

[ Pregleda: 2054 | Odgovora: 4 ] > FB > Twit

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 - pre 196 meseci
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

 
Odgovor na temu

Dejan Lozanovic
Dejan Lozanovic
Beograd

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

Jabber: null@elitesecurity.org
Sajt: speedy-order.com


+75 Profil

icon Re: Swing, thread, invokeLater26.02.2008. u 12:00 - pre 196 meseci
Cekaj za koju verziju jave to moras da radis ? Evo ti backport swingworkera https://swingworker.dev.java.net/
 
Odgovor na temu

hyle
Perica Milošević
Belgrade

Član broj: 30030
Poruke: 150
77.247.200.*

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


+4 Profil

icon Re: Swing, thread, invokeLater26.02.2008. u 14:25 - pre 196 meseci
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();
 
Odgovor na temu

Dejan Lozanovic
Dejan Lozanovic
Beograd

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

Jabber: null@elitesecurity.org
Sajt: speedy-order.com


+75 Profil

icon Re: Swing, thread, invokeLater26.02.2008. u 14:51 - pre 196 meseci
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
 
Odgovor na temu

_prompt

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



Profil

icon Re: Swing, thread, invokeLater05.03.2008. u 10:46 - pre 196 meseci
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
 
Odgovor na temu

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

[ Pregleda: 2054 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

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