Hintergrundbild im Frame

Fragster

Mitglied
Ja liebe Community mich plagt das nächste Problem ;(

Ich würde gern meinem Applet ein schönes Hintergrundbild verpassen anstatt nur eine Farbe auszuwählen. Nun habe ich schon gegoogelt aber ich finde nur sachen zu JFrames und JPanels. Ich benutze aber Frame und wollte wenn möglich nicht mein komplettes Programm umschreiben wenn das überhaupt gehen sollte. Habt Ihr einen Ansatz wie Ich einem Frame ein Bild als Hintergrund geben kann? Ich wäre euch sehr dankbar für jede Info.

MfG.

Fragster
 
Du kannst ein Panel nehmen und dessen paint Methode überschreiben. Dadrin kannst du dann deinen Hintergrund zeichnen.
Alle deine Komponenten etc. kommen dann auf das Panel.
 
also panel erstellen und paint methode überschreiben dürfte schon getan sein wenn das hiermit erledigt ist

Java:
	public void paint(Graphics g) {
        Image img = Toolkit.getDefaultToolkit().getImage("images.png");
        g.drawImage(img,0,0,null);
    }

das panel wird oben erstellt das hab ich jetzt mal hier nicht mit reingenommen. meine komponenten darauf adden dürfte auch nicht das problem sein. War es das dann schon oder fehlt dann noch irgendwas?
 
Code:
super.paint();
solltest du noch aufrufen.
Das Bild solltest du nicht in der paint Methode laden, sondern vorher irgendwo.

Wo hast du das Panel geaddet? LayoutManager?
Hat das Panel ne PreferredSize?
 
das panel hab ich jetzt auf den Frame geaddet

Java:
fenster.add(panel);

fenster ist das erwähnte Frame. Das Panel hat momentan genau die selbe größe wie das fensterFrame. wohin soll denn super.paint(); und was soll da vorallem rein?
 
Java:
	public static void main(String[] args) {
		Frame f = new Frame("Panel Example");
		f.setLayout(new BorderLayout());
		f.add(new RedPanel());
		f.pack();
		f.setVisible(true);
	}
	
	private static class RedPanel extends Panel {
		public RedPanel() {
			setPreferredSize(new Dimension(100,100));
		}
		
		@Override
		public void paint(Graphics g) {
			super.paint(g);
			
			g.setColor(Color.RED);
			g.fillRect(0, 0, getWidth(), getHeight());
		}
	}
Statt dem fillRect zeichnest du dort halt dein Hintergrundbild.
 
Den Code kannst du einfach in eine beliebige (leere) Klasse stecken, die nötigen Imports einfügen und starten.
 
Danke dir EikeB. Der Code funktioniert soweit. Aber ich hab irgendwie noch nicht rausgefunden was ich an dem Code ändern muss das er meine image.png als hintergrund nimmt und nicht die über g.setColor gesetzte Farbe. Vllt könntest du mir da noch einen Tipp geben.

Danke

Fragster

PS: Sorry bin ein totaler Neuling was das betrifft
 

Zurück
Oben