Bild als Hintergrund in einem Swing Fenster

K

KlemensyXYZ

Gast
Moin,
ich versuche grade ein Bild als Hintergrund in einem Swing Fenster zu setzten.

Habe unter anderem das hier probiert:
Java:
public class HauptmenueHintergrund extends JFrame
{
	@SuppressWarnings("deprecation")
	public HauptmenueHintergrund()
	{
		super("hintergrung");
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.setLocation(0,0);
        this.resize(Toolkit.getDefaultToolkit().getScreenSize());
        
        public void paint(Graphics g) 
        {
            Image img = Toolkit.getDefaultToolkit().createImage("was-sind-sterne.jpg");
            g.drawImage(img,0,0,null);
        }
	}		
}

und das:
Java:
import java.awt.Toolkit;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.*;

@SuppressWarnings("serial")
public class HauptmenueHintergrund extends JFrame
{
	@SuppressWarnings("deprecation")
	public HauptmenueHintergrund()
	{
		super("hintergrung");
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.setLocation(0,0);
        this.resize(Toolkit.getDefaultToolkit().getScreenSize());
        
        String backgroundImageFileName = "was-sind-sterne.jpg";
        try 
        {
            JLabel picture = new JLabel(new ImageIcon(ImageIO.read(this.getClass().getClassLoader().getResourceAsStream(backgroundImageFileName))));
        } 
        
        catch (IOException e) 
        {
            e.printStackTrace();
        }
	}		
}

doch nichts davon funktioniert.
Was mach ich noch falsch?
 

Volvagia

Top Contributor
Ersteres kann nicht funktionieren, da eine Methode (bzw. der Konstruktor) keine "Untermethode" enthalten kann. Zweiteres funktioniert nicht, da das JLabel ja zu keinen Container (JFrame/Contentpane) hinzugefügt wird.
Ich würde dir empfehlen, ein JLayeredPane zu nehmen und dem ContentPane hinzuzufügen. Das hat die Möglichkeit sehr viele Panels zu beinhalten. Damit kannst du den Background an die unterste Ebene hinzufügen, damit er später den anderen Komponenten nicht im Weg ist, wenn sie z. B. Ebenen wechseln müssen.
 
K

KlemensyXYZ

Gast
Hallo KlemensyXYZ,

vielleicht hilft dieses Beispiel: Hintergrundbild

wenn ich den Pfad durch meinen ersetze bekomme ich den Fehler:
Code:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at javax.swing.ImageIcon.<init>(Unknown Source)
	at spiel.ImageDemo.<init>(ImageDemo.java:16)
	at spiel.ImageDemo$1.run(ImageDemo.java:39)
	at java.awt.event.InvocationEvent.dispatch(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
ich gehe mal davon aus das er mein Bild nicht findet oder?

Bei einer Suche im Internet sollte man eigentlich unzählige Beispiele finden.

Was meinste denn woher ich diese Ideen habe :D

Damit kannst du den Background an die unterste Ebene hinzufügen, damit er später den anderen Komponenten nicht im Weg ist, wenn sie z. B. Ebenen wechseln müssen.

Eigentlich sollten auf diesem Hintergrund (erstmal) nichts anderes sein als das Bild
werde das trotzdem mal ausprobieren (ist das nicht dasselbe wie im vom Post von André Uhres ?)
 

André Uhres

Top Contributor
Er findet das Bild wahrscheinlich nicht. Wie ist denn deine Verzeichnisstruktur?

Mein Beispiel benutzt kein Layeredpane. Der Hintergrund ist einfach ein JLabel, das als Contentpane dient. Das dürfte auch in deinem Fall genügen.

Gruß,
André
 
K

KlemensyXYZ

Gast
Wie ist denn deine Verzeichnisstruktur?

Das Bild liegt direkt im Eclipse Projekt, in diesem Fall:

D:\JavaProgramme\Eclipse_Workspace\Bild_als_Hintergrund

dort habe ich immer die Dateien abgelegt auf die ich mit Java Programmen zugreifen wollte.
Ich habe es mit folgenden Pfaden versucht:
1.
Java:
ImageIcon backgroundImage = new ImageIcon(getClass().getResource("D:\JavaProgramme\Eclipse_Workspace\Bild_als_Hintergrund\sterne.jpg"));
2.
Java:
ImageIcon backgroundImage = new ImageIcon(getClass().getResource("sterne.jpg"));
3.
Java:
ImageIcon backgroundImage = new ImageIcon(getClass().getResource("D:/JavaProgramme/Eclipse_Workspace/Bild_als_Hintergrund/sterne.jpg"));
4.
Java:
ImageIcon backgroundImage = new ImageIcon(getClass().getResource("D.JavaProgramme.Eclipse_Workspace.Bild_als_Hintergrund.sterne.jpg"));
 

Volvagia

Top Contributor
Am Besten ist, du gibts es direkt ins Projektverzeichnis, wenn du Eclipse verwendest wäre das der Ordner, in dem die Ordner src und bin liegen. Dort kannst du es relativ per new ImageIcon("") laden. Oder per getRessource aus den bin-Ordner, dafür muss der Pfad aber mit / beginnen. Also "/sterne.png".

Die Erste Möglichkeit läd bei einer jar dann die Dateien aus dem selben Ordner wie die jar, die Zweite direkt aus der jar.
 
K

KlemensyXYZ

Gast
Am Besten ist, du gibts es direkt ins Projektverzeichnis, wenn du Eclipse verwendest wäre das der Ordner, in dem die Ordner src und bin liegen.
dort liegt die Datei
Dort kannst du es relativ per new ImageIcon("") laden. Oder per getRessource aus den bin-Ordner, dafür muss der Pfad aber mit / beginnen. Also "/sterne.png".
ok werde ich versuchen
Die Erste Möglichkeit läd bei einer jar dann die Dateien aus dem selben Ordner wie die jar, die Zweite direkt aus der jar.
ich habe keine jar Datei und (eigentlich) auch nicht vor so eine zu erstellen
 

Volvagia

Top Contributor
Ich weiß, blöde Frage, aber passiert mir oft: Bist du sicher, dass es ein jpg ist, und du es nicht nur z. B. in Paint gezeichnet aber als bmp unter *.jpg abgespeichert hast?
 
K

KlemensyXYZ

Gast
oh sorry hatte da noch nen tippfehler übersehen :oops:
zwei buchstaben vertauscht;)
ginbts da noch ne möglichkeit das Bild mit der Größe des Fenster zu verändern?
So dass es zB bei Vollbild auch das ganze Bild ausfüllt und nich nur die fläche der usprünglichen Auflösung?
 
Zuletzt bearbeitet von einem Moderator:

Volvagia

Top Contributor
Gibt es. In diesen Fall würde ich das Bild einfach strecken, wenn sich die Größe ändert. Einen anderen Weg kenne ich nicht. Dazu würde ich einen ComponentListener registrieren, der hat die Methode componentResized. Das ganze sähe dann wohl so aus:

Java:
private Icon defaultIcon;

public void componentResized(ComponentEvent e)
{
	Icon currentIcon = getIcon();
	if(currentIcon == null)
		return;
	if(defaultIcon == null)
		defaultIcon = currentIcon;
	
	int width = getWidth();
	int height = getHeight();

	BufferedImage newImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
	g.drawImage(((ImageIcon)defaultImage).getImage(), 0, 0, width, height, null);
	g.dispose();

	setIcon(new ImageIcon(newImage));
}

Ist nur vom Hirn in die Tasten, denke aber dass es klappen sollte. Vorsicht, der Code blockiert den EDT.
 

André Uhres

Top Contributor
Du kannst auch einfach die Klasse BackgroundPanel benutzen, die macht zusätzlich alle Komponenten durchsichtig, die ihm hinzugefügt werden (wir wollen ja nicht, dass etwa ein undurchsichtiges Panel das tolle Bild versteckt :) ). Die Klasse BackgroundPanel findest du hier: Background Panel Java Tips Weblog

Gruß,
André
 
K

KlemensyXYZ

Gast
ähm ich habe noch ein Problem:

ich wollte gerade mal ausprobieren wie man eine .jar Datei erstellt.
Das hat auch halbwegs funktioniert; das heißt alle Button und so sind da.
Nur der Hintergrund ist weg ;(

Habe ihn bis jetzt so geladen, da er ja direkt im Projekt Ordner lag:
Java:
ImageIcon backgroundImage = new ImageIcon("sterne.jpg");

doch in der .jar ist das Bild nicht mehr vorhanden.
Wie muss ich denn da den Pfad wo das Bild liegt angeben, sodass es auch mit in der jar ist?

Danke
 

André Uhres

Top Contributor
Das ist ein relativer Pfad.
Ich habe hier zwar nicht Eclipse, aber ich würde sagen im src Ordner. Dort kannst du sicher auch ein package anlegen, etwa demo. Dieses package (=Unterverzeichnis von scr) sollte dann dein Bild und den Quellcode deiner Klasse (z.B. HauptmenueHintergrund.java) enthalten:
Java:
package demo;
...
public class HauptmenueHintergrund extends JFrame
...

Gruß,
André
 
K

KlemensyXYZ

Gast
ähm und wie kommt damit jetzt das Bild auf dem Icon?

Code:
getClass().getResource("/demo/sterne.jpg")

ist ja eine URL

habe das so versucht,
Java:
package pics;

import javax.imageio.ImageIO;
import javax.swing.*;

import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.net.URL;

public class Hintergrund 
{
	public static ImageIcon backgroundImage;
	@SuppressWarnings("deprecation")
	public Hintergrund()
	{
		JFrame frame = new JFrame();
        frame.setSize(300, 100);
        
        URL backgroundImageURL = this.getClass().getResource("/pics/was-sind-sterne.jpg");
        
		try 
		{
			backgroundImage = ImageIO.read(backgroundImageURL);
//habe ich im internet gefunden, funktioniert aber nicht
		} 
		catch (IOException e) 
		{
			e.printStackTrace();
		}
        JLabel contentPane = new JLabel();
        contentPane.setIcon(backgroundImage);
        contentPane.setLayout(new BorderLayout());
        frame.setContentPane(contentPane);
        frame.setLocation(0,0);
        frame.resize(Toolkit.getDefaultToolkit().getScreenSize());
        frame.setUndecorated(true);
        frame.setVisible(true);
	}
	public static void main(final String args[]) 
	{
        @SuppressWarnings("unused")
		Runnable gui = new Runnable() 
        {
            public void run() 
            {
                Hintergrund hgrund = new Hintergrund();
            }
        };
	}
}
gibts da noch ne andere Möglichkeit?

Danke
 

André Uhres

Top Contributor
Java:
package pics;

import javax.swing.*;
import java.awt.*;

public class Hintergrund
{
    private static ImageIcon backgroundImage;
    
    public Hintergrund()
    {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        backgroundImage = new ImageIcon(getClass().getResource("/pics/was-sind-sterne.jpg"));
        JLabel contentPane = new JLabel(backgroundImage);
        contentPane.setLayout(new BorderLayout());
        frame.setContentPane(contentPane);
        frame.setLocation(0,0);
        frame.setSize(Toolkit.getDefaultToolkit().getScreenSize());
        frame.setUndecorated(true);
        frame.setVisible(true);
    }
    public static void main(final String args[])
    {
        Runnable gui = new Runnable()
        {
            public void run()
            {
                Hintergrund hgrund = new Hintergrund();
            }
        };
        SwingUtilities.invokeLater(gui);
    }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Greenscreen (grüner Hintergrund ersetzen mit Bild) Java Basics - Anfänger-Themen 49
I Bild in den Hintergrund Java Basics - Anfänger-Themen 6
I Balken, mit Bild im Hintergrund, zeichen Java Basics - Anfänger-Themen 4
J Bild im Hintergrund Java Basics - Anfänger-Themen 8
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
V Bild per Java Script austauschen Java Basics - Anfänger-Themen 7
I Bild richtig speichern / Hochkant im File Explorer, nach Upload vertikal Java Basics - Anfänger-Themen 9
B Bild per KeyListener drehen Java Basics - Anfänger-Themen 1
I Kamera anschließen / Bild machen / Live View / Externe Blitz Java Basics - Anfänger-Themen 19
I Innerhalb einem Bild ein Teil austauschen Java Basics - Anfänger-Themen 26
I Datei (Bild) Drucken und wie Druckeinstellung speichern? Java Basics - Anfänger-Themen 3
krgewb byte-Array, das ein Bild repräsentiert Java Basics - Anfänger-Themen 1
H Artefact mit Bild erzeugen Java Basics - Anfänger-Themen 11
R UML-Bild (Erkennung ob static o. nicht) Java Basics - Anfänger-Themen 18
J Bild auf Hintergrundbild zeichnen Java Basics - Anfänger-Themen 5
krgewb Bild itextpdf Java Basics - Anfänger-Themen 2
C Bild in executable JAR File mitgeben Java Basics - Anfänger-Themen 5
VPChief Bild in JEditorPane Java Basics - Anfänger-Themen 9
B Warum bekomme ich kein Bild. Java Basics - Anfänger-Themen 10
S Bild einfügen // NEU Java Basics - Anfänger-Themen 12
N Bild drehen Java Basics - Anfänger-Themen 3
S Ein Bild mit dynamischer Quelle neuzeichnen Java Basics - Anfänger-Themen 12
N GLOOP Bild nicht ansichtbar Java Basics - Anfänger-Themen 5
M Bild in JFrame Java Basics - Anfänger-Themen 1
B Signatur erstellen - Bild ist nur weiß Java Basics - Anfänger-Themen 0
CptK Interface Bild rotieren Java Basics - Anfänger-Themen 17
CptK Interface Bild rotieren Java Basics - Anfänger-Themen 1
Anica Processing Animation Bild-Position ändern Java Basics - Anfänger-Themen 9
CptK Interface Bild über Methode ändern funktioniert nicht Java Basics - Anfänger-Themen 4
CptK Interface Curser durch Bild ersetzen & MouseListner Java Basics - Anfänger-Themen 2
M jTextPane Bild anzeigen Java Basics - Anfänger-Themen 6
CptK Bild beim betätigen eines JButtons Java Basics - Anfänger-Themen 6
S Bild über JButton legen Java Basics - Anfänger-Themen 3
B Bild mit Schrift befüllen / Anpassung bei Wortlänge Java Basics - Anfänger-Themen 2
D Google maps bild mit marker versehen Java Basics - Anfänger-Themen 12
D ImageView mit einfarbigem Bild fuellen Java Basics - Anfänger-Themen 3
it_is_all Bild-Pfad wird gefunden, nicht aber Textdatei-Pfad Java Basics - Anfänger-Themen 8
M Einzelne Pixel in einem Bild auslesen und bearbeiten Java Basics - Anfänger-Themen 1
M Bild wird von JFrame nicht geladen Java Basics - Anfänger-Themen 12
J Bild in Button einsetzen Java Basics - Anfänger-Themen 6
S button kommt durch bild Java Basics - Anfänger-Themen 13
M Ein Bild durch Objekterzeugung zeichnen Java Basics - Anfänger-Themen 5
K Interface Kein Bild im .jar-File Java Basics - Anfänger-Themen 15
S Bild in Jar-File mit ImageIO Java Basics - Anfänger-Themen 50
S Bild einfügen Java Basics - Anfänger-Themen 16
binop Bild anzeigen lassen Java Basics - Anfänger-Themen 2
D Bild zu Text Java Basics - Anfänger-Themen 4
I HTML Code in Bild (transparent) konvertieren Java Basics - Anfänger-Themen 0
I Watermark erstellen mit HTML in Bild? Java Basics - Anfänger-Themen 7
D Classpath Bild kann in .jar nicht geladen werden Java Basics - Anfänger-Themen 2
Anfänger2011 Bild programmieren?! Java Basics - Anfänger-Themen 3
8 Eigenes Bild in email einfügen Java Basics - Anfänger-Themen 1
K JTable Bild einfügen Java Basics - Anfänger-Themen 1
L BufferdImage schwarzes Bild nach zusammenfügen zweier Bilder Java Basics - Anfänger-Themen 8
S Bild in JOptionPane Java Basics - Anfänger-Themen 1
C Abfrage nach einem Bild im Array Java Basics - Anfänger-Themen 9
J Umgebungsvariable Programmfenster zeigt kein Bild an Java Basics - Anfänger-Themen 1
J Bild loopen Java Basics - Anfänger-Themen 6
M JFrame Bild einfügen Java Basics - Anfänger-Themen 3
S Bild bei Kontakt ändern Java Basics - Anfänger-Themen 2
C Erste Schritte Bild holen und speichern Java Basics - Anfänger-Themen 1
D Bild in Frame einfügen Java Basics - Anfänger-Themen 11
D Bild im Applet anzeigen Java Basics - Anfänger-Themen 3
F Bild in ein Runnable Jar File packen (eclipse) Java Basics - Anfänger-Themen 2
M Java-Applet: Bild einbinden (getImage) Java Basics - Anfänger-Themen 0
J Ganzes Bild Java Basics - Anfänger-Themen 4
T GUI anstatt Bild schwarzes Rechteck gespeichert Java Basics - Anfänger-Themen 0
A Bild verschwindet! Wieso?? Java Basics - Anfänger-Themen 2
I Bild aus Bereich laden Java Basics - Anfänger-Themen 3
P Bild in JFrame Titelleiste Java Basics - Anfänger-Themen 7
Y Nach Bild-Upload wird Bild nicht angezeigt Java Basics - Anfänger-Themen 1
M Button mit Bild und Text Java Basics - Anfänger-Themen 2
M JSP-Einfaches Bild anzeigen Java Basics - Anfänger-Themen 4
C Bild ins Frame laden und Objekte drüber legen Java Basics - Anfänger-Themen 1
Sogomn Bild will sich nicht skalieren lassen Java Basics - Anfänger-Themen 1
P Ein Bild für GUI (Java-Editor) Java Basics - Anfänger-Themen 4
D Bild für ein paar Sekunden einblenden und wieder ausblenden Java Basics - Anfänger-Themen 1
E Bild per Verzeichnis/JFileChooser auf JPanel laden Java Basics - Anfänger-Themen 13
S Bild auf eine Position rotieren?! Java Basics - Anfänger-Themen 4
P Bild bearbeiten Java Basics - Anfänger-Themen 9
Z Datenmatrix in Bild verwandeln Java Basics - Anfänger-Themen 4
C Bild verschwinden lassen Java Basics - Anfänger-Themen 7
S Bild Icon aus ID3Tag auslesen Java Basics - Anfänger-Themen 4
E Bild vom FileChooser aus via ImageIcon in DB schreiben Java Basics - Anfänger-Themen 16
D Bild zum Panel hinzufügen Java Basics - Anfänger-Themen 8
C Greenfoot: Bei Tastendruck und best. Wert Bild ändern Java Basics - Anfänger-Themen 2
O Auflösung einer Bild-Datei bekommen ohne sie herunterzuladen?? Java Basics - Anfänger-Themen 7
L Bild-Datein "zuschneiden" Java Basics - Anfänger-Themen 11
O DeviantArt-Bild Konverter: Fehler.. Java Basics - Anfänger-Themen 16
K Transparents Bild laden -> Fehlermeldung Java Basics - Anfänger-Themen 6
M Bild einbinden Java Basics - Anfänger-Themen 7
2 Bild auf JApplet zeichnen Java Basics - Anfänger-Themen 18
T Bild laden Java Basics - Anfänger-Themen 7
R Bild in GUI Java Basics - Anfänger-Themen 11
D Eclipse Juno zeigt Bild nicht bei Run Java Basics - Anfänger-Themen 3
Kenan89 Bild mit jar öffnen Java Basics - Anfänger-Themen 4
S Problem bei Bewegung von einem Bild! Java Basics - Anfänger-Themen 2
J Bild mit transparenter Farbe Java Basics - Anfänger-Themen 10
N Erste Schritte Applet zeichnet Bild nicht Java Basics - Anfänger-Themen 10
J Bild auf JLabel wird nicht angezeigt Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben