Bonjour tout le monde,

J'ai un JPanel qui contient un JTable et JComboBox :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
private JComboBox citereRechercheComboBox;
private JTable listeRdvTable;
j'initialise le comboBox comme ça :

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
citereRechercheComboBox.setModel(new javax.swing.DefaultComboBoxModel(
				new String[] { "Patient en cours", "Rendez-vous du jour",
						"Tous les rendez-vous", " " }));
		citereRechercheComboBox
				.addItemListener(new java.awt.event.ItemListener() {
					public void itemStateChanged(java.awt.event.ItemEvent evt) {
						 citereRechercheComboBoxItemStateChanged(evt);
					}
				});
 
private void citereRechercheComboBoxItemStateChanged(java.awt.event.ItemEvent evt) {                                                         
 
 
    	//Recherche des rendez-vous par date du jour.
    	if(getCitereRechercheComboBox()
                .getSelectedIndex() == Constantes.CRITERE_RECHERCHE_UN){
 
    		java.sql.Date sDate = new java.sql.Date(System.currentTimeMillis());
        	this.setDateRdvTextfield(new JDateChooser(sDate));
 
    	}
 
    	//Recherche de tout les rendez-vous : cacher les labels.
    	if(getCitereRechercheComboBox()
                .getSelectedIndex() == Constantes.CRITERE_RECHERCHE_DEUX){
 
    		this.nomPatientLabel.setText("");
    		this.prenomPatientLabel.setText("");
    		this.dateRDVLabel.setText("");
 
    	}
 
    	getUtilitaire().viderTable(null, this, null, null);
    	getRendezVousPatientControl().remplirTableRDV(this, getCitereRechercheComboBox()
              .getSelectedIndex());
    }
et le JTable comme ça :

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
38
39
40
41
42
43
listeRdvTable.setModel(new javax.swing.table.DefaultTableModel(
				new Object[][] {
 
				}, new String[] { "Nom", "Prénom", "Date RDV", "Heure RDV" }) {
			/**
                                         * 
                                         */
			private static final long serialVersionUID = 1L;
			boolean[] canEdit = new boolean[] { false, false, false, false };
 
			public boolean isCellEditable(int rowIndex, int columnIndex) {
				return canEdit[columnIndex];
			}
		});
		listeRdvTable.setName("listeRdvTable"); // NOI18N
		jScrollPane1.setViewportView(listeRdvTable);
		Dimension dim = new Dimension(dimensionTexteField.width + 200,
				dimensionTexteField.height * 5);
		jScrollPane1.setPreferredSize(dim);
		listeRdvTable.getColumnModel().getColumn(0).setHeaderValue("Nom"); // NOI18N
		listeRdvTable.getColumnModel().getColumn(1).setHeaderValue("Prénom"); // NOI18N
		listeRdvTable.getColumnModel().getColumn(2).setHeaderValue("Date RDV"); // NOI18N
		listeRdvTable.getColumnModel().getColumn(3).setHeaderValue("Heure RDV"); // NOI18N
 
		//Ajout du listner.
		ListSelectionModel listSelectionModel = listeRdvTable.getSelectionModel();        
		listSelectionModel.addListSelectionListener(new ControleurTableResultat());
 
public class ControleurTableResultat  implements ListSelectionListener{
    public void valueChanged(ListSelectionEvent listSelectionEvent){
        if (listSelectionEvent.getValueIsAdjusting())
            return;
        ListSelectionModel lsm = (ListSelectionModel)listSelectionEvent.getSource();
        if (lsm.isSelectionEmpty()) {
            System.out.println("No rows selected");
        }
        else{
            int selectedRow = lsm.getMinSelectionIndex();
            System.out.println("The row "+selectedRow+" is now selected");
 
        }
    }
}
Jusqu'au là c'est bon.

Alors si je change la sélection dans les lignes dans le JTable ça marche bien,(lorsque je debug le listner se lance deux fois, j'ai deux fois le message dans la console).

Mais le problème vient de ce scénario : si je sélectionne une ligne dans le tableau et je change la valeur du comboBox, dans ce cas là le listner se lance plusieurs fois (boucle infinie) et voici la sortie que j'ai :

par exemple je sélectionne la ligne 4 et je change dans le combo, voici la console:

The row 3 is now selected
The row 2 is now selected
The row 1 is now selected
The row 0 is now selected
No rows selected
No rows selected
No rows selected
No rows selected
No rows selected

==>SVP avez-vous une idée pour ça?

Merci d'avance.