Bild in einem JFrame darstellen

zer0

Erfahrenes Mitglied
Hallo,

ich habe folgendes Problem: Ich mache ein Bild mit createScreenCapture(), speichere es in image und rufe die repaint() Methode auf. Ich habe sonst keine Panels etc auf meinem Frame. Wenn ich Buttons noch im JFrame positioniere werde diese vom Bild nach dem repaint überdeckt, erst wenn ich mit der Maus über den Button fahre wird er sichtbar. Wie umgehe ich dieses Problem?
 
Ich hatte das gleiche Problem mal bei einem CardLayout.
Wie zeichnest du denn das Bild auf das JFrame?
Versuche mal, nach dem Anzeigen des Bildes nochmal ein verzögertes repaint() aufzurufen, bei mir hat das funktioniert.
 
Hallo,
das Bild zeichne ich hiermit:
Code:
public void paint(Graphics g) {
		super.paint(g);
		g.drawImage(image, 0, 0, null);
	}

Wie meinst du verzögert repaint() aufzurufen?
 
Ich hatte ein CardLayout, und immer, wenn ich auf die nächste Seite gegangen bin, waren alle Buttons weg, nur beim Darüberfahren kamen sie wieder. Als Gegenmaßnahme hab ich dann bei jedem "Seitenwechsel" die repaint()-Methode aufgerufen
Das ist hier aber nicht gemeint.

Dein Problem hatte ich in gleicher Weise auch mal. Ich habe auch versucht, erst alles zu zeichnen, dann das Bild darüberzulegen und dann die paint()-Methode vom Button aufzurufen, aber das funktioniert auch nicht.
Deshalb interessiert mich die Lösung auch.

//EDIT:
Probiere doch mal, erst die super.paint()-Methode, dann die drawImage()-Methode, und dann für den Button b:
b.repaint();
oder:
b.update(); //evtl. als Parameter g
 
Zuletzt bearbeitet:
Hast du es bisher geschafft, das Bild unter die Buttons zu zeichnen?
Ansonsten hier noch ein Vorschlag:
Java:
public void paint(Graphics g) {
    super.paint(g);
    g.drawImage(image, 0, 0, null);
    b.paint(g);
}
 
Hast du es bisher geschafft, das Bild unter die Buttons zu zeichnen?
Ansonsten hier noch ein Vorschlag:
Java:
public void paint(Graphics g) {
    super.paint(g);
    g.drawImage(image, 0, 0, null);
    b.paint(g);
}

Ja, hab es mittlerweile geschafft!

Ich rufe nach dem drawImage noch die repaint Methode für jeden Button auf, somit werden Sie wieder sichtbar! Dein Beitrag damals hat mir also geholfen :)
 
Zurück