[ _prompt @ 25.02.2008. 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

[ Dejan Lozanovic @ 26.02.2008. 12:00 ] @
Cekaj za koju verziju jave to moras da radis ? Evo ti backport swingworkera https://swingworker.dev.java.net/
[ hyle @ 26.02.2008. 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();
[ Dejan Lozanovic @ 26.02.2008. 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
[ _prompt @ 05.03.2008. 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