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

Informatiker Board » Themengebiete » Praktische Informatik » [JAVA] Verzögerung » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 4 Beiträge
JoTheGunny RE: [JAVA] Verzögerung

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();
}
}
}
ed209

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
Tobias

Ich kann nicht nachvollziehen, was du da machst. Aber ich empfehle dir mal einen Blick auf die Klassen Tmer und TimerTask.
cus [JAVA] Verzögerung

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();
            }