Bild verschwinden lassen

Cev Droon

Mitglied
Hi Leute, ich bin absoluter Java-Neuling, und möchte eine kleine Simulation entwerfen, in der man Bilder anzeigen kann, die aber auch wieder verschwinden sollen. Wie man Bilder anzeigt, weiß ich, aber das Problem liegt beim Verschwinden lassen. Ich habe es mit setVisible(false) und remove() versucht, aber es hat nicht funktioniert. Ich fänds echt nett, wenn ihr mir helfen könntet, weil im Internet hab ich leider nichts gefunden, ich hoffe, dass heisst nicht, dass ich der einzige bin, ders nicht kapiert hat.
 
Ich würde hier anstatt "Irgendwas.jpg" sowas verwenden:
[c]System.getProperty("user.dir") + "/Irgendwas.jpg"[/c]
Also als Argument für new File(...);
Aber das ist nur meine Meinung...

Zu dem Problem:
Leg dir in deiner Component - Klasse, die das Bild anzeigt, eine neue Variable an. Dann kannst du den Sourcecode so modifizieren:

Java:
// Ersetze
g.drawImage(scaledimage, x, y, this);
// Mit
if(imageVisible) // imageVisible ist ein Boolean, der angibt, ob das Bild angezeigt werden soll.
    g.drawImage(scaledimage, x, y, this);

// Dann noch Getter und Setter-Methoden
public void setImageVisible(boolean visible) {

    imageVisible = visible;
}

public boolean isImageVisible() {

    return imageVisible;
}
 
Danke erst mal für die Hilfe 😀, aber bei mir hat es irgendwie nicht so ganz funktioniert. Ich schick dir mal den ganzen Code, denn ich hab den Fehler nicht rausgekriegt. Wär echt nett, wenn du das Problem finden könntest.
 

Anhänge

Welche Bilder von "MeinZeichenPanel" sollen denn gleichzeitig unsichtbar/sichtbar gemacht werden? Mit deiner Methode müsstest du statt imageVisible mehrere Variablen anlegen: imageOrkVisible, imageOrk_1Visible, imageHaendlerVisible, etc... Eins für jedes Bild. Ich würde das Programm aber eh anders aufziehen.
 
Also gleichzeitig wollte ich gar keine Bilder verschwinden lassen. Ich wollte nur bei der angreifen()-Methode bei
Code:
if (RestLebenGegner < 1) {
			text.append("[Nachricht]Der Gegner wurde besiegt!\n");
			return;
		}
und bei
Code:
if (RestLebenSpieler < 1) {
			text.append("[Nachricht]" + Name + " wurde besiegt!\n");
			return;

		}
die jeweilige Spielfigur "verschwinden" lassen. Ich weiß, das der Code nicht ganz klar strukturiert ist, deshalb bin ich auch gerade dabei, dass ganze ein wenig umzustrukturieren. Ich hatte vor, eine (abstrakte) Superklasse namens Spielfigur zu machen, von der sich dann di Ork-Klasse, die Spieler-Klasse usw. ableiten. Dann für den Spielaufbau eine Klasse namens Spiel und die main()-Methode sollte sich dann in einer Klasse namens SpielTestlauf befinden. Falls es dir weiterhilft, ich arbeite nach dem (meiner Meinung sehr guten) Buch "Java von Kopf bis Fuß" aus der Head first-Reihe.
 
Zuletzt bearbeitet:
Also gleichzeitig wollte ich gar keine Bilder verschwinden lassen. Ich wollte nur bei der angreifen()-Methode bei
Code:
if (RestLebenGegner < 1) {
			text.append("[Nachricht]Der Gegner wurde besiegt!\n");
			return;
		}
und bei
Code:
if (RestLebenSpieler < 1) {
			text.append("[Nachricht]" + Name + " wurde besiegt!\n");
			return;

		}
die jeweilige Spielfigur "verschwinden" lassen. Ich weiß, das der Code nicht ganz klar strukturiert ist, deshalb bin ich auch gerade dabei, dass ganze ein wenig umzustrukturieren. Ich hatte vor, eine (abstrakte) Superklasse namens Spielfigur zu machen, von der sich dann di Ork-Klasse, die Spieler-Klasse usw. ableiten. Dann für den Spielaufbau eine Klasse namens Spiel und die main()-Methode sollte sich dann in einer Klasse namens SpielTestlauf befinden. Falls es dir weiterhilft, ich arbeite nach dem (meiner Meinung sehr guten) Buch "Java von Kopf bis Fuß" aus der Head first-Reihe.

Wenn du mit dieser Spielfigur-Klasse fertig bist, füg eine boolean-Variable hinzu, "sichtbar", und die Getter und Setter. Beim Rendern ginge dann so etwas:

Java:
public void render() {

    if(ork.istSichtbar())
        ork.render(); // Oder drawImage, etc...

    if(spieler.istSichtbar())
        spieler.render();
}
 

Zurück
Oben