JLabel zeitgesteuert ausblenden

fanste

Erfahrenes Mitglied
Hi,

Ich bin vor ein paar Tagen dazu gezwungen worden, für die Schule (besser gesagt für einen Abschlussabend eines Schulausfluges) ein Quiz in Java zu programmieren ^^
Läuft alles soweit ganz gut. Ich hänge da nur an einem Problem fest. Folgendes:

Das Quiz enthält eine Kategorie Bilderraten. Dabei wird ein Bild eines Promis, etc mit Schnippsel maskiert (so dass das Bild nichtmehr sichtbar ist). Diese Schnippsel sollen dann nach und nach ausgeblendet werden (Zeitabstand 2Sekunden).

Ich könnte mir denken, dass das mit der Klasse "Threads" funktioniert. Bekomme damit aber gar nichts hin :(
Dann hab ich mir mit ein paar Schleifen und der Funktion "
System.currentTimeMillis()" etwas zusammen gezimmert. Hierbei hab eich aber das Problem, dass die Labels nicht nach und nach, sondern Blitzschnell alle hintereinander verschwinden, so wie es aussieht, sobald die Funktion durch ist.

Daher an euch die Frage: Könnte mir einer nen Codeschnippsel geben, bzw auf einen verweißen, mit dem ich das realisieren kann? Und bitte keine tuts zu "Threads" schicken. Hab mir schon so viel durchgelesen und es will dennoch nicht.

Achja. Wenn es irgendwie möglich ist, sollte sich das dann abbrechen lassen, sobald ein Spieler die Person auf dem Bild erkannt hat.

Hoffe ihr könnt mir helfen. Danke schonmal dafür

Gruß fanste

PS: Rein theoretisch müsste ich das Quiz soll Abend fertig haben. Doch ohne diesen Teil komme ich nicht viel weiter.^^
 
Java:
import javax.swing.JLabel;

public class JLabelThread implements Runnable {
	private JLabel label;

	public JLabelThread(JLabel label) {
		this.label = label;
	}

	public void run() {
		try {
			Thread.sleep(2000);
		} catch (InterruptedException e) {
		}
		//this.label
	}
}

auf die Ausführung des Codes mit dem Label wird 2sek gewartet, von außen abbrechen, wenn du es willst, kannst du mit der Methode stop. Starten tust du den Thread mit start().
Ich würde dir aber auf jedenfall empfehlen dich mit Threads auseinanderzusetzen, da du sie noch öfter brauchen wirst.
 
Hi!

Also die stop() - Methode ist nicht ohne Grund deprecated, und sollte am besten nicht benutzt werden! Da gibt es einen anderen Lösungsweg (Stichwort isInterrupted usw)
Die Idee mit den Labels halte ich aber auch nicht für besonders gut. Um das Bild zu verdecken brauchst du einige Labels, die willst du ja nacheinander einblenden - das wird mit threads schon mal problematisch.
Warum machst du es nicht so:
Du erstellst eine Klasse die z.B. von JPanel erbt. Indem du die paint() - Methode überschreibst, kannst du das Promi-Bild darstellen, bzw. "verdeckt" darstellen. Du impelentierst eine Methode, die anfängt das Bild nach und nach aufzudecken - das wäre dann EIN thread, der alle 2Sek zufällig ein noch nicht aufgedeckten Bereich des Bildes "freigibt".
So würd ich das Realisieren - denk drüber nach ;)

mfg,
Muddin
 
Zurück