JPanel Inhalt aktualisiert nach Thread.sleep nicht

  • Themenstarter Themenstarter Nulpe12345
  • Beginndatum Beginndatum
N

Nulpe12345

Gast
Folgende Methode soll in meinem Spiel Stück für Stück den Lebensbalken (hier als farbiges JTextPane dargestellt) bis auf den neuen Wert reduzieren. Leider aktualisiert die Funktion die Breite des Lebensbalken erst nachdem die ganze Funktion abgelaufen ist und nicht alle 50ms...


Java:
public void lebensbalkenHPAbziehenLangsam(JTextPane lebensbalken, double lebenAlt, double lebenNeu) {
		final int intervall = 50; //Anzahl der Schritte
		Double stueck = (lebenAlt - lebenNeu) / new Double(intervall); //Breitenabzug pro Schritt
		for(int i=0;i<intervall;i++) {
			lebensbalken.setBounds(lebensbalken.getX(), lebensbalken.getY(), lebensbalken.getWidth() - stueck.intValue() , lebensbalken.getHeight()); //Zieht von der alten Breiten "stueck" ab
			try {
				Thread.sleep(50);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		}
 
Ich nehme an deine Methode wird vom EDT ausgeführt. Starte einen eigenen Thread dafür und gib die setBounds an den EDT weiter.
 
Ah vielen Dank. Lasse jetzt den Main-Thread an gewollter Stelle so lange warten, bis der EDT einen boolean verändert und ändere dann den Balken. Vielleicht nicht die eleganteste Lösung, aber erstmal ausreichend 🙂
 

Zurück
Oben