31. maj 2007 - 00:05Der er
3 kommentarer og 1 løsning
Tråde. start stop fra GUI
hey jeg skal starte og stoppe en timer i en gui ved hjælp af 2 knapper. det er sådan set ok. men efter den har været stoppet og jeg vil starte den igen så får jeg fejl. hvad er mit problem.
######## Ur klassen ######## import java.text.DateFormat; import java.util.Date;
public class Ur extends Thread { private DateFormat klformat = DateFormat.getTimeInstance(DateFormat.MEDIUM); //private klformat = DateFormat.getTimeInstance(DateFormat.MEDIUM);
public Ur() {
}
public void run() { for (int i = 0; i < 101; i++) { try { sleep((long)(1 * 1000));//Sætter tiden til 5 sec.
Date tid = new Date(); //System.out.println( tid ); System.out.println( "Kl : "+ klformat.format(tid) ); } catch (InterruptedException e) { } } } } ####### GUI klassen ###### import java.awt.BorderLayout; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JButton; import javax.swing.JFrame;
public class GUI { private JFrame frame; private JButton stopButton = new JButton(); private JButton goButton = new JButton(); private Ur tid = new Ur();
For det første. thread.stop() er ikke thread safe. Så den skal ud.
arne_v's forslag er faktisk udemærket. Men der er et par problemer med den, og hvis jeg forstår din applikation rigtigt vil du kun køre din timer 100 gange. jf.
for (int i = 0; i < 101; i++)
arne_v's forslag vil have det problem at den resetter din tæller hver gang. Og det skal du så håndtere.
den måde jeg er opdraget på mht. threads er at håndtere det vha. en boolean. Den gør det samme som jeg umiddelbart kan se du er ude efter. Kode kommer her:
public class GUI { private JFrame frame; private JButton stopButton = new JButton(); private JButton goButton = new JButton(); private Ur tid = new Ur();
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.