# im fenster ein hintergrund bild einfügen



## Nao88 (6. Sep 2009)

wie kann ich hier im Fenster ein Bild als Background setzen
geht das vieleicht mit paint

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

class Fenster extends JFrame {
Fenster(){
	super("Mein Fenster");
	this.setDefaultCloseOperation(EXIT_ON_CLOSE);
	this.setSize(250, 200);
	Container contentPane=getContentPane();
	contentPane.setLayout(new FlowLayout(FlowLayout.CENTER));
	
	contentPane.setBackground(Color.BLUE);	//wie kann ich im hintergrund ein img einfügen
		
	this.setResizable(false);
	this.setLocation(200, 200);
	this.setVisible(true);
	}
}
```


----------



## André Uhres (6. Sep 2009)

Versuch'a mal so:

```
Fenster() {
    super("Mein Fenster");
    JLabel picture = new JLabel(new ImageIcon(getClass().getResource("DSCN0274.JPG")));
    setContentPane(picture);
...
```


----------



## Nao88 (6. Sep 2009)

```
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
 
class Fenster extends JFrame {
Fenster(){
    super("Mein Fenster");
    this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    this.setSize(250, 200);
    Container contentPane=getContentPane();
    contentPane.setLayout(new FlowLayout(FlowLayout.CENTER));
    JLabel picture = new JLabel(new ImageIcon(getClass().getResource("DSCN0274.JPG")));
    setContentPane(picture);

    //contentPane.setBackground(Color.BLUE);  //wie kann ich im hintergrund ein img einfügen
        
    this.setResizable(false);
    this.setLocation(200, 200);
    this.setVisible(true);
    }
}
public class HauptFenster 
{

	public static void main(String[] args) 
	{
		Fenster f=new Fenster();

	}

}
```
gbit ein fehler
Exception in thread "main" java.lang.NullPointerException
	at javax.swing.ImageIcon.<init>(Unknown Source)
	at Fenster.<init>(HauptFenster.java:12)
	at HauptFenster.main(HauptFenster.java:27)


----------



## André Uhres (6. Sep 2009)

Bist du sicher, daß die Bilddatei existiert?


----------



## lumo (7. Sep 2009)

ich mach das so: (ohne den classloader funktionierts bei mir nicht...)

```
String backgroundImageFileName = "DSCN0274.JPG";
JLabel picture = new JLabel(new ImageIcon(ImageIO.read(this.getClass().getClassLoader()
				.getResourceAsStream(backgroundImageFileName))));
```


----------



## Atze (7. Sep 2009)

André Uhres hat gesagt.:


> Bist du sicher, daß die Bilddatei existiert?



*schmunzel*  oder ists nicht so, wie ich denke? dann hab ich was übersehen


----------



## Nao88 (7. Sep 2009)

bekomme immer noch ein fehler


```
class Fenster extends JFrame {
Fenster(){
    super("Mein Fenster");
    
    this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    this.setSize(250, 200);
    Container contentPane=getContentPane();
    contentPane.setLayout(new FlowLayout(FlowLayout.CENTER));


    String backgroundImageFileName = "Desert.JPG";
    JLabel picture = new JLabel(new ImageIcon(ImageIO.read(this.getClass().getClassLoader()
                  .getResourceAsStream(backgroundImageFileName))););
    //contentPane.setBackground(Color.BLUE);  //wie kann ich im hintergrund ein img einfügen
        
    this.setResizable(false);
    this.setLocation(200, 200);
    this.setVisible(true);
    }
}
```


----------



## Atze (7. Sep 2009)

ok, war doch nicht so wie ich dachte, zum glück 
immernoch der gleiche fehler? geb mal den absoluten pfad zum bild, an, da wo es wirklich auf der platte liegrt. relative pfade sind zum testen auch immer gefährlich, wenn man nicht genau weiß wie man drauf zugreift


----------



## Nao88 (7. Sep 2009)

```
JLabel picture = new JLabel(new ImageIcon(ImageIO.read(this.getClass().getClassLoader()
                  .getResourceAsStream(backgroundImageFileName)))  ; );
```
er sagt das erste sinikolon sie falsch in line 2 aber ich kann das da ja nicht weg löschen

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	Syntax error on token ";", delete this token

	at Fenster.<init>(HauptFenster.java:18)
	at HauptFenster.main(HauptFenster.java:31)


----------



## lumo (7. Sep 2009)

Nao88 hat gesagt.:


> ```
> JLabel picture = new JLabel(new ImageIcon(ImageIO.read(this.getClass().getClassLoader()
> .getResourceAsStream(backgroundImageFileName)))  ; );
> ```
> ...



einfach machen was der debugger sagt... ";" löschen


```
JLabel picture = new JLabel(new ImageIcon(ImageIO.read(this.getClass().getClassLoader()
                  .getResourceAsStream(backgroundImageFileName))));
```


----------



## Nao88 (7. Sep 2009)

dann kommt der Fehler
Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	Unhandled exception type IOException

	at Fenster.<init>(HauptFenster.java:23)
	at HauptFenster.main(HauptFenster.java:64)


----------



## lumo (7. Sep 2009)

dann musst du einen try-catch block einsetzen...


----------



## Nao88 (7. Sep 2009)

jetzt kommt kein fehler mehr aber das bild wird nicht angezeigt ???
	
	
	
	





```
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.IOException;
class Fenster extends JFrame
{
	Fenster()
	{

		super("hintergrung");
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);

		this.setSize(600,500);
		String backgroundImageFileName = "Desert.JPG";

	    try {
			JLabel picture = new JLabel(new ImageIcon(ImageIO.read(this.getClass().getClassLoader()
			        .getResourceAsStream(backgroundImageFileName))));
		} catch (IOException e) {
		
			e.printStackTrace();
		}
		this.setLocation(350,200);
		this.setVisible(true);
	}
}
```


----------



## Atze (7. Sep 2009)

schon mit dem absoluten pfad versucht????  auch wenn du das für den produktivbetrieb nicht realisieren kannst, versuch es wenigstens im testsystem. schaden kanns nicht, dann kannst du ausschließen, dass es am fehlenden pfad liegt


----------



## Nao88 (7. Sep 2009)

soo wenn ich ihn direkt setzte kommt diese fehler meldung
Exception in thread "main" java.lang.IllegalArgumentException: input == null!
	at javax.imageio.ImageIO.read(Unknown Source)
	at Fenster.<init>(HauptFenster.java:25)
	at HauptFenster.main(HauptFenster.java:50)


----------



## Atze (7. Sep 2009)

How to Use Icons (The Java™ Tutorials > Creating a GUI with JFC/Swing > Using Swing Components) schau dich mal hier um, vielleicht hilft das

zur not so :


```
Image img = Toolkit.getDefaultToolkit().getImage(backgroundImageFileName);
```


----------



## lumo (8. Sep 2009)

Atze hat gesagt.:


> ...auch wenn du das für den produktivbetrieb nicht realisieren kannst...


hehe, der war gut!



Nao88 hat gesagt.:


> Exception in thread "main" java.lang.IllegalArgumentException: input == null!


heisst nichts anderes als dass er dein bild nicht finden kann...

hast du so einen pfad angegeben:

```
String pfad = "C:\user\ich\bild.jpg";
```
oder so:

```
String pfad = "C:\\user\\ich\\bild.jpg";
```
oder so:

```
String pfad = "C:/user/ich/bild.jpg";
```

nur variante zwei und drei funktionieren, da in den strings der \ als escape zeichen genommen wird...


----------



## Atze (8. Sep 2009)

lumo hat gesagt.:


> hehe, der war gut!



 hab die rahmenbdingungen völlig ignoriert, habs halt generell formuliert  also ob man sich immer merken kann, was im ersten post steht


----------



## lumo (8. Sep 2009)

naja, hier gehts eher um basics wie "was mache ich mit 'standard' ausgaben vom compiler";
(ausgaben die nicht mehr als 5 zeilen sind)


----------

