Comment insérer un checkbox dans un jtable ? [Résolu]

Messages postés
37
Date d'inscription
vendredi 24 juillet 2009
Dernière intervention
25 mai 2010
- - Dernière réponse : jennydjen
Messages postés
11
Date d'inscription
mercredi 16 décembre 2009
Dernière intervention
12 janvier 2011
- 25 mai 2010 à 19:58
salut a tous,

Je suis un débutant dans ce genre de travail alors essayez de m'aidez même si la question est bête.Alors voici mon problème: j'ai un jtable que je veux y insérer un jcheckbok mais je n'ai pas parvenu a le faire

voici l'instruction que je fais: modele.addRow(new Object [] {new javax.swing.JCheckBox(),"abc","aaaa"});

mais au lien d'avoir un jcheckbok dans la 1ere colonne je vois ça :

javax.swing.JCheckBox[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource@5f8172,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=2,bottom=2,right=2],paintBorder=false,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=]


Je comprends rien de ça. Je fais quoi pour afficher mon checkbox ?
j'ai cherché des codes mais j'ai rien compris je vous en pris d'essayer de me détailler le maximum cette fonction
je serai énormément reconnaissant

Merci d'avance
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
49
Date d'inscription
jeudi 14 avril 2005
Dernière intervention
27 novembre 2011
11
Merci
bonjour,

un petit exemple:
Object[][] data = {{false,"rr","uu"},{true,"zz","ee"},{true,"ee","rr"}};
String[] columnNames = {"1","2","3"};

DefaultTableModel tableModel = new DefaultTableModel(data, columnNames)
{
@Override
public boolean isCellEditable(int row, int column) {
return column==0;
}

@Override
public Class<?> getColumnClass(int columnIndex)
{
if(columnIndex==0)
return Boolean.class;
return super.getColumnClass(columnIndex);
}
};
JTable maTable = new JTable(tableModel);


Benoit.

Merci benmor 11

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de benmor
Messages postés
37
Date d'inscription
vendredi 24 juillet 2009
Dernière intervention
25 mai 2010
0
Merci
salut,

Merci beaucoup Benoit ça marché j'ai tellement perdu de temps que j'ai perdu l'espoir
Merci encore une fois
Commenter la réponse de trublue
Messages postés
11
Date d'inscription
mercredi 16 décembre 2009
Dernière intervention
12 janvier 2011
0
Merci
Salut,

Merci beaucoup pour ce bout de code.
Commenter la réponse de jennydjen
Messages postés
37
Date d'inscription
vendredi 24 juillet 2009
Dernière intervention
25 mai 2010
0
Merci
salut a tous,

j'ai utilisé le bout de code de Benoit ci-dessus mais je n'arrive pas à récupérer la valeur du checkbox
c-a-d si coché ou non.
j'ai besoin de votre aide s'il vous plait

Merci d'avance
Commenter la réponse de trublue
Messages postés
11
Date d'inscription
mercredi 16 décembre 2009
Dernière intervention
12 janvier 2011
0
Merci
Salut,

C'est tout simple. Tu fais taJTable.getValue(row,column).
ça te retourne true si c'est coché sinon false.

J'espère que ça répond à ta question.

Bonne soirée
Commenter la réponse de jennydjen
Messages postés
37
Date d'inscription
vendredi 24 juillet 2009
Dernière intervention
25 mai 2010
0
Merci
salut,

je n'arrive pas à le faire
Voici mon modèle:

import javax.swing.table.DefaultTableModel;

public class PartageTabModel extends DefaultTableModel {


Object[] columnNames = {Boolean.FALSE, "Liste de fichier", ""};
DefaultTableModel tableModelPartage = new DefaultTableModel(columnNames, 0);

public PartageTabModel() {
}
public DefaultTableModel getModel ()
{
return this.tableModelPartage;
}

@Override
public Object getValueAt(int row, int column) {
return super.getValueAt(row, column);
}
@Override
public boolean isCellEditable(int row, int column) {
return column == 0;
}

@Override
public Class<?> getColumnClass(int columnIndex) {
if (columnIndex == 0) {
return Boolean.class;
}
return super.getColumnClass(columnIndex);
}
}

puis j'ai fait:

Table_partage.setModel(tableModelPartage);
.....
tableModelPartage.addRow(new Object [] {new Boolean(false),fill.getName(),""});

pour moi, je veux récupérer la valeur du checkbox(colonne 0) si elle est true j'affiche la chaine dans la colonne 1

aidez moi SVP je suis bloqué

Merci d'avance
Commenter la réponse de trublue
Messages postés
11
Date d'inscription
mercredi 16 décembre 2009
Dernière intervention
12 janvier 2011
0
Merci
Salut,

Ton model n'a pas été redéfini ( DefaultTableModel tableModelPartage = new DefaultTableModel(columnNames, 0); )

Pour redéfinir ton model tu dois faire ceci :
DefaultTableModel tableModelPartage = new PartageTabModel (columnNames, 0).

Puis ce model tu le donne a une JTable : JTable maJTable = new JTable(tableModelPartage);

Ensuite tu fais ce dont tu as besoin.

J'espère que tu comprend ce que je veux dire.

Bonne soirée.
Commenter la réponse de jennydjen
Messages postés
11
Date d'inscription
mercredi 16 décembre 2009
Dernière intervention
12 janvier 2011
0
Merci
Re

Je vais te donner un bout de code :

import javax.swing.table.DefaultTableModel;

public class PartageTabModel extends DefaultTableModel {

public PartageTabModel(Object[] columnNames, int nombreRow) {
super(columnNames,nombreRow);
}

@Override
public boolean isCellEditable(int row, int column) {
return column == 0;
}

@Override
public Class<?> getColumnClass(int columnIndex) {
if (columnIndex == 0) {
return Boolean.class;
}
return super.getColumnClass(columnIndex);
}
}


ça c'est la classe de ton model.

Dans une autre classe tu fais appel a cette classe de cette maniere :

Object[] columnNames = {Boolean.FALSE, "Liste de fichier", ""};

DefaultTableModel tableModelPartage = new PartageTabModel(columnNames,0);
JTable maJTable = new JTable(tableModelPartage);
[...];

Si tu as besoin de récupérer la valeur de la colonne 0 (colonne avec la JCheckBox), tu fais :

maJTable.getValue(ligneSelectionneParExemple,0).

ceci te retourne true si elle est coché sinon false.

J'espère que c'est plus claire.

Bonne soirée
Commenter la réponse de jennydjen

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.