Bonjour à tous,
je suis actuellement en train de developper une appli en swing.
Un de mes panel contient un JTable qui repose sur un modele.
Jusqu'ici rien de formidable
mon problème est le suivant:
une des colonne (la 5eme) contient une liste de String. Cette liste est differente d'une ligne à l'autre.
je veux que le rendu se fasse de la façon suivante:
a l'affichage du tableau, la 5 eme colonne ne montre que le premier elements de la liste et si on clic dessus , une combo se deroule avec la liste des String disponible pour cette ligne.
A la construction de mon modele, en colonne 5 je lui donne donc le premier element de la liste correspondant a la la ligne.
la colonne 6 est une colonne cachée qui contient la liste entiere
ensuite lorsque j'affiche mon tableau j'applique le code suivant:
pour chaque ligne créer une combo avec les bonnes valeurs
le probleme est que cette derniere partie de code applique un rendu a l'ensemble de la colonne. Donc l'ensemble des cellules de la colonne contiennent la meme liste de termes : celle de la derniere ligne du tableau...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 for (int j = 0; j < list.size(); j++) { //list.size == nbre de ligne JComboBox synCombo = new JComboBox(); ArrayList listSyn = (ArrayList)model.getValueAt(j,6); //6 == colonne cachée for (int i = 0; i < listSyn.size(); i++){ //listSyn = liste de termes synCombo.addItem((String)listSyn.get(i)); } TableColumnModel columnModel = table.getColumnModel(); TableColumn synColumn = columnModel.gettColumn(SimpleImportModel.SYN_COLUMN); synColumn.setCellEditor(new DefaultCellEditor(synCombo)); }
Est ce que quelqu'un sait comment appliquer le rendu non pas sur l'ensemble de la colonne mais sur une cellule specifique puisque chaque cellule de la 5eme colonne doit contenir sa propre liste dans la combo.
j'espere que je suis clair
merci pour suggestions
Stephane
Partager