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

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

8 réponses

Répondre au sujet
benmor 49 Messages postés jeudi 14 avril 2005Date d'inscription 27 novembre 2011 Dernière intervention - 8 mai 2010 à 15:45
+10
Utile
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.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de benmor
trublue 37 Messages postés vendredi 24 juillet 2009Date d'inscription 25 mai 2010 Dernière intervention - 10 mai 2010 à 17:23
0
Utile
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
jennydjen 11 Messages postés mercredi 16 décembre 2009Date d'inscription 12 janvier 2011 Dernière intervention - 21 mai 2010 à 13:32
0
Utile
Salut,

Merci beaucoup pour ce bout de code.
Commenter la réponse de jennydjen
trublue 37 Messages postés vendredi 24 juillet 2009Date d'inscription 25 mai 2010 Dernière intervention - 24 mai 2010 à 14:53
0
Utile
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
jennydjen 11 Messages postés mercredi 16 décembre 2009Date d'inscription 12 janvier 2011 Dernière intervention - 24 mai 2010 à 19:49
0
Utile
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
trublue 37 Messages postés vendredi 24 juillet 2009Date d'inscription 25 mai 2010 Dernière intervention - 25 mai 2010 à 11:36
0
Utile
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
jennydjen 11 Messages postés mercredi 16 décembre 2009Date d'inscription 12 janvier 2011 Dernière intervention - 25 mai 2010 à 19:45
0
Utile
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
jennydjen 11 Messages postés mercredi 16 décembre 2009Date d'inscription 12 janvier 2011 Dernière intervention - 25 mai 2010 à 19:58
0
Utile
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.