Comment insérer un checkbox dans un jtable ?

Résolu
trublue
Messages postés
37
Date d'inscription
vendredi 24 juillet 2009
Statut
Membre
Dernière intervention
25 mai 2010
- 8 mai 2010 à 10:13
jennydjen
Messages postés
11
Date d'inscription
mercredi 16 décembre 2009
Statut
Membre
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

8 réponses

benmor
Messages postés
49
Date d'inscription
jeudi 14 avril 2005
Statut
Membre
Dernière intervention
27 novembre 2011
9
8 mai 2010 à 15:45
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.
11
trublue
Messages postés
37
Date d'inscription
vendredi 24 juillet 2009
Statut
Membre
Dernière intervention
25 mai 2010

10 mai 2010 à 17:23
salut,

Merci beaucoup Benoit ça marché j'ai tellement perdu de temps que j'ai perdu l'espoir
Merci encore une fois
0
jennydjen
Messages postés
11
Date d'inscription
mercredi 16 décembre 2009
Statut
Membre
Dernière intervention
12 janvier 2011

21 mai 2010 à 13:32
Salut,

Merci beaucoup pour ce bout de code.
0
trublue
Messages postés
37
Date d'inscription
vendredi 24 juillet 2009
Statut
Membre
Dernière intervention
25 mai 2010

24 mai 2010 à 14:53
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jennydjen
Messages postés
11
Date d'inscription
mercredi 16 décembre 2009
Statut
Membre
Dernière intervention
12 janvier 2011

24 mai 2010 à 19:49
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
0
trublue
Messages postés
37
Date d'inscription
vendredi 24 juillet 2009
Statut
Membre
Dernière intervention
25 mai 2010

25 mai 2010 à 11:36
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
0
jennydjen
Messages postés
11
Date d'inscription
mercredi 16 décembre 2009
Statut
Membre
Dernière intervention
12 janvier 2011

25 mai 2010 à 19:45
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.
0
jennydjen
Messages postés
11
Date d'inscription
mercredi 16 décembre 2009
Statut
Membre
Dernière intervention
12 janvier 2011

25 mai 2010 à 19:58
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
0