Zeitmessung springt vorraus und funktioniert nicht!

SombraOscura

Mitglied
Hallo Liebe Community,

Ich hänge Momentan an folgendem Problem:
Als Schulprojekt sollen mein Gruppenpartner und ich ein "Mensch ärgere dich nicht" Spiel programmieren, welches mit in die Abi-Note fließen wird. Das Spiel steht soweit und ist voll spielbar. Um es grafisch etwas besser zu gestallten, dachten wir uns beim Würfeln eine Gif über ein Label einzufügen. Da uns keine Möglichkeit eingefallen ist die Gif auf dem letzten Frame zu stoppen, dachten wir uns, nach einer gewissen Zeit das letzte Bild, extra auf das Label zu laden und somit die Gif praktisch überspielen. Realisieren wollten wir dieses Abwarten der gewissen Zeit durch eine:
Java:
{
      Thread.sleep(millisekwait); // Millsekunden
    }
    catch (InterruptedException e)
    {
      e.printStackTrace();
    }
in einer externen Methode.
Gleiches versuchten wir über eine Rechnung mit System.currentTimeMillis().

Hier der gesamte Quelltext für unsere Lösung mit der Gif:
Java:
private void spieleGif(){
    for (int i=0;i<11 ;i++ ) {                                                  //Spielfeld unsichtbar machen
      for (int j=0;j<11 ;j++ ) {
        dieGUI.aktualisiereFeld(i,j,Color.LIGHT_GRAY,false,null);
      } // end of for
    } // end of for  
    dieGUI.lblWuerfel.setVisible(true);                                         //Label für die Gif sichtbar machen
    dieGUI.lblWuerfel.setIcon(iconWuerfel[1][0]);                               //Gif in das Label laden
    dieGUI.warten(1000);                                                        //Wartefunktion aufrufen
    //dieGUI.lblWuerfel.setIcon(iconWuerfel[1][1]);                               //Letztes Bild der Gif in das Label laden
  }

Das Problem ist nun, dass das Programm zuerst die warte aufruft, was durch einfrieren sichtbar wird (was nebenbei ebenso wenig sein soll) und erst danach die Gif lädt :bahnhof: .
Wie schaffen wir es die Gif aufzurufen, dann nebenher die Zeit zuzählen, ohne das Programm einzufrieren, um danach das letzte Bild laden zu können.
Vielen Dank im Voraus!

MfG SombraOscuro
 

Network

Top Contributor
Mithilfe von Multithreading. Den EDT sollte man niemals pausieren sonst passiert das was ihr feststellt.

Erstellt einen neuen Thread den ihr dann pausiert und das Icon setzt.
 

SombraOscura

Mitglied
Vielen Dank. Werde mich direkt daran versuchen. Hast du zufälliger Weise direkt eine gute Seit, bei der man sich in Threads gut einarbeiten kann? Wäre super! :)
 

Network

Top Contributor
Naja bei Swing verwendet man normalerweise die "SwingWorker" Klasse, da Multithreading und GUIs nicht zusammenpassen.
Die enthält eigentlich alles was du brauchst und man muss sich auch nicht in Multithreading einarbeiten was unter umständen sehr kompliziert und frustrierend werden kann, nicht weil das Thema kompliziert ist sondern weil Fehler auftauchen werden die man so vorher nicht kannte und auch nicht einschätzen kann.

Die SwingWorker Klasse nimmt das aber für dich ab.

Ein gutes Code-Beispiel das genau in deine Richtung geht:
animation - How do I use SwingWorker in Java? - Stack Overflow
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
C getSelectedRow() springt bei JButton-Auswahl nicht weiter mit Frameworks - Spring, Play, Blade, Vaadin & Co 16
G HILFE Dringend switch case springt nicht raus Frameworks - Spring, Play, Blade, Vaadin & Co 23
L Mauszeiger springt in obere linke Ecke des JDialogs Frameworks - Spring, Play, Blade, Vaadin & Co 3
D Button springt aus Textbox Frameworks - Spring, Play, Blade, Vaadin & Co 2
A Debugger springt in andere Klassen Frameworks - Spring, Play, Blade, Vaadin & Co 14
K Figur Springt nicht Frameworks - Spring, Play, Blade, Vaadin & Co 2
P Spieler im 2D-Spiel springt herum Frameworks - Spring, Play, Blade, Vaadin & Co 0
G JTable springt (JScrollPane, GridBagLayout) Frameworks - Spring, Play, Blade, Vaadin & Co 1
K TextWatcher springt nicht an Frameworks - Spring, Play, Blade, Vaadin & Co 9
T JTable + JScrollePane Größe "springt" beim resizen des Fensters Frameworks - Spring, Play, Blade, Vaadin & Co 4
engelsteufelin Taschenrechner springt an Start nach falscher Eingabe Frameworks - Spring, Play, Blade, Vaadin & Co 7
W Java Applet aus der Taskleiste springt in Vordergrund Frameworks - Spring, Play, Blade, Vaadin & Co 3
O Progressbar 'springt nicht an' Frameworks - Spring, Play, Blade, Vaadin & Co 5
B Exception springt nicht in den catch- Block Frameworks - Spring, Play, Blade, Vaadin & Co 14
R Programm springt nicht in if Bedingung Frameworks - Spring, Play, Blade, Vaadin & Co 9
F Debugging springt nicht in Methode - liefert null Frameworks - Spring, Play, Blade, Vaadin & Co 2
C LWUIT: Scrollen der Form springt am Ende Frameworks - Spring, Play, Blade, Vaadin & Co 0
Haave Animation "springt" trotz Wartebefehl Frameworks - Spring, Play, Blade, Vaadin & Co 3
J Eclipse springt nicht mehr an. Frameworks - Spring, Play, Blade, Vaadin & Co 8
nrg Debugger springt immer in Java SE Code Frameworks - Spring, Play, Blade, Vaadin & Co 3
D Methode springt zwischen returns Frameworks - Spring, Play, Blade, Vaadin & Co 2
Balbes JComboBox springt af den ersten Wert zurück Frameworks - Spring, Play, Blade, Vaadin & Co 6
Z JList "springt" Frameworks - Spring, Play, Blade, Vaadin & Co 5

Ähnliche Java Themen

Neue Themen


Oben