24. marts 2002 - 14:45Der er
4 kommentarer og 1 løsning
Simpel tråd - hvordan?
Hej, jeg kører en Frame1 en update-funktion ved tryk på knap, som laver en hulens masse på et ftp-site. Samtidig ville jeg gerne have den til at skrive til - JLabel statusBar; i Frame1, hvad den laver. Jeg ved der skal bruges noget med tråde, men aner ikke hvordan jeg får det til at virke. Den relevante del af programmet ser således ud:
class Frame1 extends JFrame { final JLabel statusBar; ... public void knap1_actionPerformed(ActionEvent e) { sitemanager.update(this, ...); } }
class Sitemanager { public void update(Frame1 f, ...) { f.statusBar.setText("Kopierer filer..."); copyAll(); ... }
public void copyAll(); { ... } ... }
Hvordan får jeg den til (vel gennem en tråd) at køre f.statusbar.setText("..."); ?? Jeg er helt på bar bund. Kører jeg setText() allersidst i metoden update(Frame1 f, ...) virker bliver det udført, men ikke hvis det er i begyndelsen eller midt i.
Den klasse der skal starte den nye tråd skal implementere Runnable. D.v.s den skal have en run() metode. class Sitemanager implementere Runnable{ public vois run(){ //....
Tråden startes med: Thread t1 = new Thread(new Sitemanager()); t1.start(); Da du ikke kan overføre parametre når du starter tråden, kan du f.eks først kalde en metode med parametre, som sætter nogle klassevariable. Derefter kan din nye tråd bruge disse.
Hvis du ikke har brugt tråde før, skal du være forsigtig. Prøv at læse noget om samtidighedproblemer og synchronized
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.