[Java] Canvas Objekt löschen

martin

Well-Known Member
Hi

Nach einiger Recherche im Internet habe ich herausgefunden, dass das wohl in Java nicht geht. Ein Objekt kann nicht manuell gelöscht werden. Deshalb habe ich folgendes Problem.
Ich habe mir ein Canvas Objekt namens BildButton gemacht, womit man ein Bild anzeigen kann und ein Ereignis ausführen lassen kann wenn geklickt wurde. Hier ein Bsp.
Code:
Img= Toolkit.getDefaultToolkit().getImage("images/test.gif");
testbild = new BildButton(Img, 60, 80);
Damit wird das Bild test.gif angezeigt, in der richtigen Größe und alles passt soweit. Allerdings möchte ich, dass das Bild nachdem man drauf geklickt hat, verschwindet. Und zwar nicht nur mit setVisible(false), sondern komplett, das Bild soll nicht mehr zur Verfügung stehen.

Thx
 
Code:
testbild = null
Wenn das nächste Mal der Müll abgeholt wird, ist das Objekt, auf das testbild zeigt, aus dem Speicher verschwunden.
 
Danke für den Tip. Damit klappt es aber nicht. Aber egal, ich poste mal das Objekt BildButton, hab versucht eine methode zu schreiben, die das Bild aktualisiert bzw. das Canvas mit dem neuen Bild neu zeichnet, haut aber irgendwie nicht hin, es wird auch nach dem Aufrufen der Methode neuzeichnen immer das alte ursprüngliche Bild angezeigt.
Code:
import java.awt.*;

public class BildButton extends Canvas
{
    Image image;
    int breite, hoehe;

    public BildButton(Image image, int breite, int hoehe)
    {
		this.image = image;
		this.breite = breite;
		this.hoehe = hoehe;
    }
    public void paint (Graphics g)
    {
		if (image != null)
		g.drawImage(image, 0,0,this);
    }
    
    public void neuzeichnen (Image image, int breite, int hoehe){
		this.image = image;
		this.breite = breite;
		this.hoehe = hoehe;
		repaint();
    }
    
    //Noetig, damit Canvas sicher gezeichnet wird
	public Dimension getMinimumSize() {
		return new Dimension(breite,hoehe);
	}
	//Noetig, damit Canvas sicher gezeichnet wird
	public Dimension getPreferredSize() {
		return getMinimumSize();
	}

}
 
Also wie ich das richtig verstehe, soll nach dem Aufruf der Methode "neuzeichen" das Bild nicht mehr angezeigt werden. ( image != null)

Wie währe es denn, das über den Mediatracker zu erledigen, und an Stelle des ersten Bildes ein leeres "gif" einzufügen.

ps. Warum ist es denn so wichtig, das dieses Bild "WIRKLICH" verschwindet?? Also was hast du da genau vor ??
 
Hi

Ich wollte schlampig programmieren, deshalb sollte es ganz verschwinden. Mittlerweile hab ich es über diese Methode geschafft mein Problem zu lösen und es reicht aus, die Bilder mit setVisible(false) zu "verstecken".

Danke allen
 
Zurück
Oben