29. juli 2003 - 19:44Der er
14 kommentarer og 1 løsning
GUI opdateres ikke
Når jeg trykker på min knap er det meningen at en jlabel skal ændre indhold (ved label.setText("..")) og at en JProgressBar skal "fyldes mere ud" efterhåden som noget kode afvikles. Mit problem ligger i at gui først opdateres når alt kode er udført og derved ser man kun slut-tilstanden. De system.out.println's der er bliver udført løbende men guien bliver ikke opdateret løbende.
I et inbound callcenter, hvor identiteten på den, der ringer ind, skal bekræftes, kan kontrollen nu foregå i telefonkøen. Det understøtter fem centrale KPI'er for callcentre.
Ja, jeg har prøvet med en tråd, som understående. Burde det ikke også virke? Jeg er ikke særlig skarp i tråede, så hvis jeg gør noget forkert vil det være skønt med en forklaring :o)
public class readStatus extends Thread { JLabel jLStatus; JProgressBar jProgressBar;
readStatus(JProgressBar jProgressBar, JLabel jLStatus) //modtag info omkring hvor langt upload er i en tråd, måske det virker? { this.jProgressBar = jProgressBar; this.jLStatus = jLStatus; }
public void run() { while(true) { jLStatus.updateUI(); jProgressBar.updateUI(); } }
public void jLabelSetText(String text) { jLStatus.setText(text); } }
Forrygende riversen, nu virker det :o) Så hvis du er flink lige at smide et svar... tak for hjælpen :o)
Til andres orientering, så gav riversen mig følgende ide:
"Thread t = new Thread() { public void run() { //indsæt kode her der laver opdateringerne // kræver reference til gui'en // lad være med at placere selve JLabel etc. i denne klasse } };
t.start();
tilføj det i din actionPerformed"
Det gav følgende resultat:
public class readStatus extends Thread { private Upload up; private String serverAdr; private String bnavn; private String pass;
Du eller en anden kan vel ikke forklare mig hvorfor det er nødvendig at køre det i en tråd for sig selv? Jeg troede faktisk at gui elementer i forvejen (automatisk) kørte i deres egen tråd. Under alle omstændigheder kan pc'en vel kun gøre en ting ad gangen og den eksekverer jo koden kronologisk.. Men så er det måske fordi hver tråd får begrænset cpu tid? eller?
alle gui elementerne kører i den samme tråd så derfor skal koden der opdaterer kører i en anden tråd. Hvis ikke køres koden som opdaterer variablerne og først når metoden returnerer opdateres gui'en. Når det kører i egen tråd opdateres gui'en når den anden tråds timeslice udløber
Okidokey, så forstår jeg bedre :o) Tak for forklaringen.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.