Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème ajout JCheckBox dans un JTable

JTable(Vector rowData, Vector columnNames)

15 février 2012 à 14:52:03

Bonjour à tous !
Alors voici mon problème :
Dans mon programme, j'effectue une requête select qui me renvoi un certains nombre de lignes. A la fin de chaque ligne, je souhaiterais ajouter un CheckBox. Voici comment je procède :
while (resultat.next())
    		{
    			
    			Vector<String> row = new Vector<String>();	
    		    row.addElement("<html><b>"+resultat.getString("date")+"</b></html>");
    		    row.addElement("<html><b>"+resultat.getString("num_intervention")+"</b></html>");
    		    row.addElement("<html><b>"+resultat.getString("code_typeinter_intervention")+"</b></html>");
    		    row.addElement("<html><b>"+resultat.getString("codepostal")+"</b></html>");
    		    row.addElement("<html><b>"+resultat.getString("nb_km")+"</b></html>");
    		    row.addElement("<html><b>"+resultat.getString("descriptif")+"</b></html>");
    		    row.addElement("<html><b>"+resultat.getString("duree")+"</b></html>");
    		    
    		    if(resultat.getBoolean("peage")==true){
    		    	row.addElement("<html><b>Oui</b></html>");
    		    }
    		    else{
    		    	row.addElement("<html><b>Non</b></html>");
    		    }
    		    
    		    row.addElement(cBsupprimer);
    		    
    		    rowData.addElement(row);

    		}


Hors la méthode addElement() n'accepte que les Strings en paramètre ! J'ai donc une erreur sur la ligne :
row.addElement(cBsupprimer);
cBsupprimer étant mon CheckBox.
J'aimerais savoir comment pourrais-je procéder si possible en gardant le constructeur JTable(Vector rowData, Vector columnNames).
Merci pour votre aide ! ;)




EDIT :
J'ai modifier mon code en changeant le type de vecteur de String à objet
Vector<Object> row = new Vector<Object>();

maintenant la ligne row.addElement(cBsupprimer); est acceptée.
Cependant lors de l'affichage je ne retrouve pas mes CheckBox mais ceci :
[Ljavax.swing.JCheckBox;@10980e7

J'ai donc rajouté le code suivant comme c'est expliqué dans le tuto java :
this.tListeInter.setDefaultRenderer(JCheckBox.class, new TableComponent());

ainsi que la class suivante :
public class TableComponent extends DefaultTableCellRenderer {

	public Component getTableCellRendererComponent(JTable table,
			Object value, boolean isSelected, boolean hasFocus, int row,
			int column) {
		//Si la valeur de la cellule est un JButton, on transtype notre valeur
		if (value instanceof JCheckBox){
			return (JCheckBox) value;
		}
		else
			return this;
	}
}


Mais pas de changement ! Quelqu'un aurait une solution ?

DOUBLE EDIT (Désolé):

en fait j'utilise un tableau de checkbox --'
voici donc la dernière version de mon code :D
int cpt=0;
    		while (resultat.next())
    		{
    			
    			Vector<Object> row = new Vector<Object>();	
    		    row.addElement("<html><b>"+resultat.getString("date")+"</b></html>");
    		    row.addElement("<html><b>"+resultat.getString("num_intervention")+"</b></html>");
    		    row.addElement("<html><b>"+resultat.getString("code_typeinter_intervention")+"</b></html>");
    		    row.addElement("<html><b>"+resultat.getString("codepostal")+"</b></html>");
    		    row.addElement("<html><b>"+resultat.getString("nb_km")+"</b></html>");
    		    row.addElement("<html><b>"+resultat.getString("descriptif")+"</b></html>");
    		    row.addElement("<html><b>"+resultat.getString("duree")+"</b></html>");
    		    
    		    if(resultat.getBoolean("peage")==true){
    		    	row.addElement("<html><b>Oui</b></html>");
    		    }
    		    else{
    		    	row.addElement("<html><b>Non</b></html>");
    		    }
    		    
    		    row.addElement(cBsupprimer[cpt]);
    		    
    		    cpt++;
    		    
    		    rowData.addElement(row);

    		}


Maintenant les cellules ou sont censées apparaitrent les CheckBox sont vides. Voilà !
  • Partager sur Facebook
  • Partager sur Twitter