# Java > Interfaces Graphiques en Java > AWT/Swing >  Rcuprer valeur d'un JComboBox

## Rastapwalu

Messieurs dames, bonsoir,
je souhaiterais rcuprer la valeur d'un JComboBox, remplie par ma DB. Opration somme toute simple, mais visiblement pas : 

Code : 



```

```

Erreur : 



```

```

Help! I need somebody. Help!  ::yaisse2::

----------


## Rastapwalu

Lorsque je dclare le String en "final" comme il le demande, voici l'erreur : 



```
D:\JAVA\Cables*****1\src\Index\ajoutCable.java:122: cannot assign a value to final variable lieux
```

----------


## fr1man

Et comme a ?
En mettant ta variable en final et en ne l'initialisant pas.



```

```

----------


## Rastapwalu

Dans ce cas j'ai un autre message d'erreur : 



```

```

----------


## fnobb

Bonjour,

une question :

le code donn est dans une mthode
la variable lieux a comme dure de vie le temp d'excution de la mthode.
l'vnement est dclanch  la slection da la combo donc  la fin de la mthode

comment compte tu utiliser par la suite la variable lieux ?

----------


## Rastapwalu

Non, elle est dclare en dehors de la mthode, dans la classe. Mais elle est "remplie" dans la mthode que j'ai envoy.
Je compte l'utiliser aprs comme argument dans une requete SQL vers ma DB.
Mais tant dclare dans la classe, elle est cense tre rcupre sans problme non?

----------


## fnobb

la variable lieux est definie au niveau de la classe
pourquois ne pas passer par ses accesseurs  ?



```

```

----------


## Rastapwalu

C'est quoi le set coll  la variable Lieux? Parce que java ne le comprend pas, moi non plus d'ailleurs...



```

```

----------


## fnobb

si lieux est une variable de classe, elle doit avoir une lthode set et une mthode get


```

```

----------


## Rastapwalu

Ca ne fonctionne pas, j'ai une erreur disant que Lieux n'a pas t initialise. 
Et quand je l'initialise, il m'affiche ce que j'ai mis dans l'initialisation.


C'est qd mme ridicule de rcuprer la valeur d'un JComboBox
 ::(:

----------


## fnobb

Comment est dclench l'appel  la base ?

----------


## Rastapwalu

```

```

----------


## fr1man

Pourquoi ne fais tu pas directement un :


```

```

l o tu as besoin de rcuprer la valeur de ta combo ?
Pas besoin de passer par un vnement, non ?

----------


## fnobb

la seule chose qui utilise la variable lieux c'est le JLabel "messTest" ( messTest= new JLabel(lieux); ) !

donc pourquoi ne pas faire ?



```

```

----------


## Rastapwalu

C'est un test pour le moment, pour voir si ca fonctionne ou non. Ca servira plus tard  tre envoy comme argument dans une requtes SQL.
J'explique : 
Ce JComboBox permet de choisir le batiment, en fonction de ce qui est choisi dans cette liste (batiment), j'aimerais qu'un autre JComboBox se remplisse des etages disponibles dans ce batiment, puis en fonction de l'etage, les locaux, etc...
Donc, rcuprer la valeur simplement, oui, ca marche, je vais voir si ca me suffit pour terminer comme je le souhaite. Car si je change une valeur, les liste suivante doivent aussi changer... D'ou l'utilisation de l'vnement.

----------


## fnobb

il faut dcouper le constructeur de ta classe AjoutCable (les nom de classe commence par une majuscule) en plusieur mthodes.

dans le constructeur on ne garde que ce qui sert  construire l'affichage de la fentre (partie garphique et listener)
ensuite il faut une mthode par traitement( par exemple crer une methode de recherche des tages)



```

```

puis si tu souhaite que le changement de batiment provoque le chargement de la combo des tages il suffit que l'evementde la combo des batiments appel la methode



```

```

----------


## fnobb

Voil un exemple pour comprendre le principe de la gestion evnementiel (fait  la va-vite donc nettement amliorable):


```

```

----------


## Rastapwalu

Je n'utilise pas de mthode pour la simple et bonne raison que chaque fois que je rempli une liste, c'est par requete sql. et donc si je dois  chauqe fois appeler une mthode pour un remplissage, ca complique le systme assez fort. Je sais que ma solution n'est pas le plus "propre", mais c'est la plus simple il me semble.

Je rxplique ce que je veux : 

J'ai un liste : je slectionne dedans un batiment.
L une autre liste apparait (ou se remplit, c'est pareil, elle peut etre soit absente, soit grise) en fonction de ce qui a t choisi dans la premire.
L rebelote, une autre liste apparait en fonction de ce qui a t choisi dans la 2e.
etc...

----------


## fnobb

si tu ne veux pas faire de requte  chaque changement, rien ne t'empche de charger la liste complete des elements au dbut (dans le constructeur), et dans la mthode tu construit la combo  partir des lements.

par contre tu ne peux pas viter de faire une mthode qui reconstruit la deuxime liste  chaque changement d'item de la premire.

----------


## Rastapwalu

Je ne vois pas comment je peux d'une mthode, renvoyer la liste vers la fenetre.
Je ne dis pas que c'est pas possible hein! Je dis juste que je ne comprend pas comment faire?
Je sais que je vais devoir utiliser des mthodes, mais dans ma tete, je ncomptais utiliser que des ecouteurs, ce genre de choses.

----------


## fnobb

l'exemple donn plus haut n'est pas clair ?
le fait de changer le contenu de la combo dans la mthode permet de changer l'affichage dans la fentre.

----------

