JAVA Countdown

Tacofan

Aktives Mitglied
Hallo,

ich brauche ein Countdown.
Dieser soll einfach für 5 Sekunden ein GIF anzeigen und danach soll das GIF "entfernt" werden.
Habe den Code bis jetzt so:

Code:
for(int i =60; i>0;i--)
{
thread.sleep(1000);
system.out.println(i);
}
lbGIF.setVisible(false);

leider "hängt" das GIF dann es bewegt sich nicht...
Weiß jemand wie ich das hier lösen kann?
 
Dein "sleep" blockiert wahrscheinlich den UI Thread, daher ändert sich dein gif nicht.
Solche Sachen sollte man immer entsprechend in Threads auslagern, damit man eben den UI Thread nicht blockiert.
 
Ja, genau. Habe es mal in einen Button rein gemacht.
Da ich eigentlich möchte das die GUI sich direkt am Anfang öffnet und gleichzeitig das GIF abgespielt wird und nach dem Countdown das GIF verschwindet.

Wenn ich es aber direkt am Anfang mache kommt erst der Countdown und danach öffnet sich erst die GUI.

Kannst du mir sagen was ich anders machen muss/soll?:/
 
Code:
btTest = new JButton("New button");
        btTest.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e)
            {
                public class TimeCounter
                {
                static Thread thread = new Thread();
                public void main(String args[]) throws InterruptedException
                {
                for(int i =60; i>0;i--)
                {
                thread.sleep(1000);
                System.out.println(i);
                }
                }

                }
            }
        });
        btTest.setBounds(339, 365, 89, 23);
        contentPane.add(btTest);

Habe das mal so probiert o.o
Aber was ist falsch? Alles? 😀
 
Aber was ist falsch? Alles? 😀
Ist es falsch? Was würdest du denn erwarten das nun passiert? Was passiert stattdessen?
Bitte konkrete Beschreibungen liefern und ebenso konkrete Fragen stellen.

Du erzeugst einen neuen MouseListener für deinen Button. Dieser Listener hat selbst aber keine Funktionalität.
Du hast da zwar Code geschrieben, aber du hast einfach nur eine Klasse deklariert mit einen Thread Object und einer main-Methode, fertig von diesem Code wird nichts ausgeführt
Keine Ahnung warum du hier eine neue Klasse deklarierst und eine main-Methode.
 
Code:
btTest = new JButton("New button");
        btTest.addMouseListener(new MouseAdapter() {
            @SuppressWarnings("static-access")
            @Override
            public void mouseClicked(MouseEvent e)
            {

                Thread thread = new Thread();

               
                for(int i =60; i>0;i--)
                {
                try
                {
                    thread.sleep(1000);
                }
                catch (InterruptedException e1)
                {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
                System.out.println(i);
                }       
            }


Habe es so gemacht.

Aber der Countdown läuft noch immer runter und erst dann kann man was wieder machen
 
Du erstellst hier einfach nur ein Thread Objekt und das wars.
Danach läuft eine Schleife welche nicht viel macht. Wo startest du zum Beispiel den Thread?

Bitte schau dir das Beispiel in dem von mir geposteten Link genau an! Du implementierst nirgends das Runnable Interface (so wie im Beispiel).
 

Zurück
Oben