Bonjours
bon j'ai une petite question que je vais essayer de le dtailler au max.
en faite j'ai une table de rapports parmit ses colonne la colonne ID (un seul rapport peut etre realise par un ou plusieur intervenants)
donc, je veux ajouter une colonne intervenant qui contenir des combobox qui sera rempli par les nom des intervenants
chaque combobox sera rempli par une requete sql qui va utiliser l'ID du rapport de la table rapport
j'ai essayer le code ci dessous mais ca marche pas, lorsque je clic sur le combobx je doit cliquer deux fois pour que le popup soit afficher
et le combobox est rempli par des noms autre que les noms des intervenant qui'ont fait ce rapport. je pense que la class TableComponentCombobox est appelé a chaque fois que je clic sur le combobox.
la class:
l'appel de la class:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 public class TableComponentCombobox extends DefaultTableCellRenderer { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { int id=Integer.valueOf(table.getValueAt(row,0).toString()).intValue();//obtenir l'ID du rapport ArrayList arraylisttype=new ArrayList(); int i=0,j=0; try{ Connection connec=ConnexionMysql.ConnecrDb(); Statement s=connec.createStatement(); ResultSet r=s.executeQuery("SELECT nom_intervenant, prenom_intervenant FROM `effectuer_correctif` " + "INNER JOIN intervenant " + "ON intervenant.`ID_INTERVENANT`=effectuer_correctif.`ID_INTERVENANT` " + "WHERE `ID_RAPPORT`='"+id+"';");//la requete pour remplir le combobox while(r.next()) { arraylisttype.add(r.getString("nom_intervenant")+" "+r.getString("prenom_intervenant")); i=i+1; } } catch(SQLException e) { e.printStackTrace(); } String[] stringintervenant=new String[i]; for(j=0;j<i;j++){ stringintervenant[j]=(String)arraylisttype.get(j); } table.getModel().setValueAt(new JComboBox(), row, column); table.getColumnModel().getColumn(column).setCellEditor(new DefaultCellEditor(new JComboBox<>(stringintervenant))); return new JComboBox(stringintervenant); } }
le resultat obtenit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 DefaultTableModel tablemodel=(DefaultTableModel) DbUtils.resultSetToTableModel(r);//r: est le resultat d'une requete tablemodel.addColumn("Intervenant(s)"); tablerapportpreventif.setModel(tablemodel); tablerapportpreventif.getColumnModel().getColumn(7).setCellRenderer(new TableComponent()); tablerapportpreventif.getColumnModel().getColumn(8).setCellRenderer(new TableComponentCombobox());//appel de la class TableComponentCombobox
qu'il est la modification a ajouter pour corriger ce probleme?
Partager