Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » [JAVA] Verzögerung » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen [JAVA] Verzögerung
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
cus
Grünschnabel


Dabei seit: 22.10.2008
Beiträge: 1

[JAVA] Verzögerung Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo, wollte das die zahlen 0-9 im Label zahlL nach einer kleinen verzögerung
nacheinander angezeigt werden.
Allerdings hängt sich das ganze bei Druck auf den Button StartB auf.
das ganze wurde in der Umgebung BlueJ programmiert.
Syntaxfehler wurden nicht festgestellt. Hier der kleine wichtige ausschnitt:

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
public void verzögerung(){
        try{
                Thread.sleep(2000);
            } catch(Exception e) {
            }
    }
    public void actionPerformed(ActionEvent e){
        Object obj e.getSource();
        
        if(obj == startB){
            for(int i=0i<10i++){
                zahlL.setText(""+i);
                verzögerung();
            }
22.10.2008 15:24 cus ist offline Beiträge von cus suchen Nehmen Sie cus in Ihre Freundesliste auf
Tobias
Routinier


Dabei seit: 18.09.2006
Beiträge: 324

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich kann nicht nachvollziehen, was du da machst. Aber ich empfehle dir mal einen Blick auf die Klassen Tmer und TimerTask.
22.10.2008 15:27 Tobias ist offline E-Mail an Tobias senden Beiträge von Tobias suchen Nehmen Sie Tobias in Ihre Freundesliste auf
ed209
Routinier


Dabei seit: 07.09.2006
Beiträge: 324

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hängt sich das Programm wirklich auf, oder macht es nur 20 Sekunden nichts?
Bin kein großer Swing-Experte, aber ich schätze daß du das ganze Eventsystem für diese Zeit lahm legst.

Sobald du auf den Knopf drückst, geht der Kontrollfluß in deinen ActionListener und blockiert dort zehn mal 2000ms. Vermutlich kommen damit dann auch nicht mehr die Routinen die dein Label zeichnen zum Zug.

Du könntest also so einen Timer benutzen wie Tobias vermutlich vorgeschlagen hat. Deine Schleife in einen eigenen Thread auszulagern könnte auch helfen, wobei Du Dir damit schnell noch mehr Probleme machst weil du mehrere Threads gleichzeitig hast (Was passiert, wenn du zweimal auf den Knopf drückst usw.)

Gruß,
ED
27.10.2008 21:12 ed209 ist offline E-Mail an ed209 senden Beiträge von ed209 suchen Nehmen Sie ed209 in Ihre Freundesliste auf
JoTheGunny JoTheGunny ist männlich
Jungspund


Dabei seit: 12.11.2008
Beiträge: 10
Herkunft: NRW

RE: [JAVA] Verzögerung Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

es hängt sich nicht auf, sondern du lässt den Haupt-Thread damit warten. Lass durch die aktion einen neuen Thread starten, der das ausführt, dann geht es.
So würde ich es machen ( die objekte, wie Button und Label sind hierbei nicht enthalten, also erst einfügen, dann geht es )

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
public class MyActionListener implements ActionListenerRunnable
{
private Main owner// Die klasse, das Label und Button enthält

private Thread t;

public MyActionListenerMain m )
{
this.owner m;
}

public void run()
{
for(int i=0i<10i++)
{
this.owner.zahlL.setTextString.valueOf) );
try
{
Thread.sleep2000 );
}
catch( InterruptedException IX )
{
}

// den Thread auf null setzen, damit die aktion
// wiederholt werden kann
this.null;
}
public void actionPerformedActionEvent e)
{
if( this.== null && e.getSource() == this.owner.startB )
{
this.= new Thread(this);
this.t.start();
}
}
}

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von JoTheGunny: 03.05.2009 21:03.

03.05.2009 20:59 JoTheGunny ist offline Homepage von JoTheGunny Beiträge von JoTheGunny suchen Nehmen Sie JoTheGunny in Ihre Freundesliste auf Fügen Sie JoTheGunny in Ihre Kontaktliste ein MSN Passport-Profil von JoTheGunny anzeigen
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » [JAVA] Verzögerung