auf einem JLabel (mit Icon) zeichnen

tigger7985

Grünschnabel
Hallo,
ich habe ein JLabel (name=bild) in einer JScrollPane in dem ein Bild (png, jpg, usw) angezeigt wird.
Dies geschieht über die setIcon()-Methode des JLabels.
Code:
	public void ladeBild(File file) {
		img = new ImageIcon(file.getPath());
		bild.setIcon(img);
	}
Nun würde ich gern auf dieses Bild weitere Linien einzeichnen.

Bisher habe ich
Code:
	public void draw() {
		Graphics g = this.bild.getGraphics();
		g.fillOval(50, 50, 100, 100);

		bild.paint(g);
	}

probiert. Wenn das setIcon() noch nicht ausgeführt wurde klappt das auch ohne Probleme.
Wenn das Bild angezeigt ist jedoch nicht. Ich habe den Eindruck, dass es unter dem Bild gezeichnet wird statt darauf.

Hat vielleicht jemand eine Idee wie man das umsetzten Könnte ohne auf das setIcon() zu verzichten?
(Sonst krieg ich Probleme mit dem zoomen des Bildes und der Anzeige in der ScrollPane)
 

Harrier

Erfahrenes Mitglied
bild.paint() überschreibt dir natürlich das was du mit draw machst (sprich, zeichnet das icon drüber).

Du könntest eine Unterklasse von JLabel machen und paint() überschreiben. Dann kannst du in deiner neuen paint-Methode zuerst die der Parent-Klasse aufrufen:
@override
public void paint(Graphics g)
{
super.paint(g);
g.fillOval(50, 50, 100, 100);
}