Image von Hintergrund entfernen

javaml

Mitglied
Hallo,
ich habe eine Komponente von JLabel abgeleitet und die paint-Methode überschrieben, um Images an bestimmten Positionen zu zeichnen:
public void paint(Graphics g)
{
super.paint(g);
g.drawImage(image, x, y, this);
}

Kann mir jemand sagen, wie ich die gezeichneten Bilder wieder entfernen kann?

Vielen Dank.
 
Moin!
Du verstehst da etwas falsch.. Nur weil du einmal ein Bild da hingezeichnet hast, ist es nicht permanent da.
Im Gegenteil, das Bild wird jedesmal neu gezeichnet..
Also muss da auch nichts entfernt werden... du musst dir beispielsweise in einem boolean einfach nur merken, ob das Bild gezeichnet werden soll:
Code:
public void paint(Graphics g){
super.paint(g);
if(shouldDraw)
    g.drawImage(image,x,y,this);
}

Übrigens: Mittles des aufrufes repaint() kannst du übrigens deine Komponente dazu zwingen, sich neu zu zeichnen
*gruessle*
MeinerEiner
 
Ah, stimmt ja, danke.

Ich habe aber immer noch ein Problem, vielleicht hätte ich es gleich genauer schildern sollen. Das Problem liegt wohl doch in einer anderen Methode:
Code:
    public void updateImage(Image image)
    {
        images[i] = image;
        
        x = xArray[i];
        y = yArray[i];
        
        Graphics g = getGraphics();
        g.drawImage(image, xArray[i], yArray[i], this);
    }

Beim Aufruf zeichnet die Methode an Bild an der Position und in der Größe wie ich es wünsche, kein Problem. Wenn ich sie aber beim nächsten Mal wieder aufrufe mit einer kleineren Version des gleichen Image, bleibt der Rest des alten Image(der, der nicht übermalt wird) auf dem Bildschirm, was nicht erwünscht ist(das Bild soll per Maus verkleinert werden können).

Ich habe auch versucht, statt
Code:
        Graphics g = getGraphics();
        g.drawImage(image, xArray[i], yArray[i], this);
einfach repaint() aufzurufen, dann wurde das Bild aber gar nicht gezeichnet.

Scheinbar fehlen mir noch etwas Erfahrung und Verständnis, was den Umgang mit der Graphics-Komponente angeht.
 
Zurück