# Java > Interfaces Graphiques en Java > AWT/Swing >  Positionner des jlabel dans un jpanel

## sarra02

Bonjour,

Je dveloppe une petite application sur java, mon problme est le suivant :
je veux que lorsque je clique sur le jpanel de mon jframe, il m'insre un label avec une photo d'un arbre.
au dbut j'ai cre 40 labels et j'ai commenc  jouer sur la position avec 


```
jlablel.setlocation(x,y)
```

mais lorsque je voulu crer un nouveau jlabel a chaque nouveau clic, a n'a pas march il ne m'affiche rien.

Merci d'avance pour votre aide.

----------


## joel.drigo

Salut,

Tout d'abord, par dfaut, les conteneurs SWING (comme le JPanel par exemple) gre positionnement et dimensionnement de leur contenu (les composants qu'on y met), par l'intermdiaire d'un layout manager. Un JPanel a un FlowLayout par dfaut, par exemple. Tu auras beau appeler setLocation, a n'y changera rien. On peut supprimer le layout manager, et tout grer soi-mme, mais a fait des composants trs fig, non ractifs au changement de dimension de la fentre par exemple, plus difficile  insrer dans JScrollPane, etc... Il est prfrable de l'viter.

Ensuite, je ne comprends pas : tu parles d'un ct de 40 JLabels crs ds le dpart, puis d'autre part de crer un JLabel  chaque clic sur le bouton. Ils sont crs d'avance et tu ne fais que les ajouter au JPanel, c'est a ? En tout cas, lorsqu'on ajoute un composant  un conteneur dj affich (et layout), il est ncessaire de reforcer le layout et souvent le redessin, ce qu'on fait par l'appel successifs de revalidate() et repaint() :



```

```

----------


## sarra02

merci pour votre rponse,
Ma premire solution tait de crer un bon nombre de jlabel au dpart aprs je leur change de position, mais ce n'est pas une bonne solution, du coup j'ai pens  crer un jlabel  chaque clic 


```

```

Mais rien ne s'affiche dans mon Jpanel :/

----------


## joel.drigo

Dj, je t'ai dis que le setLocation() ne ferait rien si tu n'as pas enlev le layout manager (setLayout(null) ou jPanel3 = new JPanel(null); pour le crer), et en plus je t'ai dit de faire revalidate() et repaint().

Change ton code en :



```

```

----------


## sarra02

oui j'ai fait comme vous m'avez dit 


```

```

j'ai tap le mme code que vous m'avez donn mais toujours riien. rien n'est affich  ::(:

----------


## joel.drigo

Le code tel quel affiche bien un JLabel, mais vide, donc tu ne risques pas de voir grand chose, videmment. Il faut mettre l'image que tu veux voir dedans.



```

```

----------

