# Bilder in JFrame anzeigen



## DieDreiJavas (14. Sep 2011)

Hallo! :meld:

Wir möchten in einem JFrame Bilder anzeigen, die vorher in JLabels eingefügt wurden. Auf dem JFrame wird nur die Bezeichnung für die JLabels angezeigt, nicht aber die Bilder selbst. Kann uns bitte jemand helfen?


----------



## Mofi (14. Sep 2011)

Wenn ich mich recht entsinne kann man auf einem JLabel nur ImageIcons anzeigen lassen.
Macht ihr dies?
Wurden die Bilder ordentlich geladen?
Wie habt ihr die Bilder geladen?

Zeigt mal etwas Code oder so ansonsten wird euch keiner helfen können, da bei sowas recht viele Faktoren eine Rolle spielen können.


----------



## DieDreiJavas (14. Sep 2011)

Die Bilder haben wir so eingefügt:


```
ImageIcon tobreli = new ImageIcon ("Spielsteine leer/TObReLi.png");
	JLabel ltobreli = new JLabel (tobreli);
```

Die Labels haben wir dann einem Array hinzugefügt:

```
spielFeld[2][0] = new JLabel("ltobreun");
```
(kleiner Auszug)

dann haben wir das Array einem JPanel hinzugefügt:

```
for (int i=0; i<7; i++)
		{
			for (int j=0;j<7;j++)
			{
				c.add(spielFeld[i][j]);
			}
		}
		return c;
```
und das ganze dann der ContentPane hinzugefügt. Das Ganze soll ein Spielfeld für ein Labyrinth werden, und jedes LJabel ist ein Spielstein.


----------



## c_sidi90 (14. Sep 2011)

Eine Möglichkeit wäre eine Image-Variable zu deklarieren 


```
Image img;
```
und diesem img übergibst du die Grafik aus deinem JLabel mit


```
img = new Image(deinImageIcon.getImage());
```

dann kannst du mit

```
public void paint(Graphics g){
super.paint(g);
g.drawImage(img, 0, 0, deineContentPane(z.B JPanel));
}
```

deine Grafik zeichnen. Vorrausgesetzt, du hast ein JPanel als ContentPane.


----------



## Mofi (14. Sep 2011)

DieDreiJavas hat gesagt.:


> Die Bilder haben wir so eingefügt:
> 
> 
> ```
> ...


Das sieht noch richtig aus, auch wenn ich nicht weiß ob es besser wäre die Bilder anders zuladen.


DieDreiJavas hat gesagt.:


> Die Labels haben wir dann einem Array hinzugefügt:
> 
> ```
> spielFeld[2][0] = new JLabel("ltobreun");
> ...


Falsch. Ihr habt *neue* Labels erstellt!

```
spielfeld[2][0] = ltobreli;
```
 wäre eine Zuweisung (oder wie eure Labels alle heißen ^^)


DieDreiJavas hat gesagt.:


> dann haben wir das Array einem JPanel hinzugefügt:
> 
> ```
> for (int i=0; i<7; i++)
> ...


Das sieht auf dem Blick wieder okay aus.

Ich denke so kurz überflogen liegt es wirklich daran, dass ihr bei eurem Array immer wieder neue Labels erstellt und die mit den Bildern nicht benutzt.


----------



## L-ectron-X (14. Sep 2011)

In von JComponent abgeleiteten Klassen wird nicht, wie von c_sidi90 geschrieben, die paint()-Methode, sondern die paintComponent()-Methode überschrieben.
Grafikdateien laden und anzeigen ? Byte-Welt Wiki


----------

