AWT Hintergrundbild in Hauptframe

Hallo zusammen,

ich suche nach einer einfachen möglichkeit meinem Hauptframe ein Background in Form einer Bilddatei(bsp Jpeg) zu verpassen.

Ich nutze zur Zeit NetBeans. Der Parameter Background (als Color) funktioniert auch nicht.


Hat jemand einen Tip für mich?

gruß und danke

Hernando
 
Hallo,


hier ein Beispiel:

Die Klasse:

Java:
import java.awt.*;
import java.io.*;
import javax.swing.*;


@SuppressWarnings("serial")
public class Bild extends JComponent {

	private Image image;
	
	
	public void setHintergrund(File file){
		
		image = Toolkit.getDefaultToolkit().getImage(file.getAbsolutePath());
		if (image != null)
			repaint();
	}
	public Image getHintergrund(){
		return image;
	}
	 @Override
	  protected void paintComponent( Graphics g ) 		// Bild wird gezeichnet (diese Methode nie direkt aufrufen)
	  {
	    if ( image != null )
	      g.drawImage( image, 0, 0, this );
	  }

}

Aufrufende Klasse:
Java:
Bild bild = new Bild();
		
		bild.setHintergrund(new File("Hintergrund/New Style/tafel_Optionen.jpg"));
		
		frame.add(bild);

hatte es bei mir mal so gelöst. Ich weiß nicht, ob es eine gute Lösung ist oder nicht, aber bei mir hat es funktioniert. Man muss nur darauf achten, dass man die Komponenten dem Bild (Image) hinzufügt und nicht dem Frame 🙂
 
Das Laden des Bildes kann mit Hilfe der ImageIO-Klasse programmiert werden.

Die callback-Methode für das Zeichnen der Komponente muss überschrieben werden, damit das Bild dort auf die Komponente gezeichnet werden kann.
Für AWT ist die zu überschreibende Methode die "paint"-Methode. Zum Zeichnen des Bildes verwenden wir die "drawImage"-Methode des Graphics-Objekts, das der "paint"-Methode übergeben wird:

Java:
public void paint (Graphics g)
{
    super.paint(g);
    / / Zeichne das zuvor geladene Bild auf die Komponente:
    g.drawImage (img, 0, 0, null);
}

Für Swing, ist die JComponent-Methode "paintComponent" zu überschreiben. Wir zeichnen das Bild so wie in AWT:

Java:
public void paintComponent (Graphics g)
{
    super.paintComponent(g);
    / / Zeichne das zuvor geladene Bild auf die Komponente:
    g.drawImage (img, 0, 0, null);
}

Siehe auch:
Malen in AWT und Swing
Malen in Swing Teil 1: der grundlegende Mechanismus

Gruß,
André
 

Zurück
Oben