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:
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);
 
}
}
l'appel de la class:
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
le resultat obtenit:
Nom : Capture.JPG
Affichages : 1453
Taille : 100,7 Ko
qu'il est la modification a ajouter pour corriger ce probleme?