IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

CheckBox dans JTable


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Par défaut CheckBox dans JTable
    Bonjour

    Je souhaiterais ajouter des cases à cocher dans mon tableau. Voici mon code:

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
     
     
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
     
    package rmi;
     
    /**
     *
     * @author Blaugrana
     */
     
     
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;
     
    import java.sql.*;
    import java.util.Vector;
    import javax.swing.*;
    import javax.swing.table.DefaultTableModel;
     
     
    public class ListeUser extends JDialog {
     
     
     
            private Statement state;
            private ResultSet resultat;
            private ResultSetMetaData resultatMD;
    	private JTable table = null;
     
     
    	private JPanel panotable = null;
    	private JScrollPane js= null;
     
            final Vector columnNames = new Vector();
            final Vector data = new Vector();
     
     
     
        Connection con;
     
    	public ListeUser() throws ClassNotFoundException, SQLException
    	{
    		this.setLayout(null);
    		   this.setTitle("Liste des utilisateurs");
     
                new Connexion().getInstance();
     
     
    		   this.setLocationRelativeTo(this.getParent());
     
     
    		   java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
     
    	       this.pack();
     
    	       this.setLocation(
    	               (screenSize.width-1000)/2,
    	               (screenSize.height-590)/2
    	               );
    	       this.setSize(1000, 620);
     
    	       this.setModal(true);
     
    	       Color  c = new Color(224,255,255);
     
     
                   afficheUser();
     
     
    	       this.setVisible(true);
    	}
     
            public void afficheUser() throws ClassNotFoundException, SQLException
            {
     
     
     state=Connexion.getInstance().createStatement();
     resultat=state.executeQuery("select * from user");
     resultatMD =resultat.getMetaData();
     
     
    int compteur= resultatMD.getColumnCount();
     
    for(int i=1;i<=compteur;i++)
    {
    columnNames.addElement(resultatMD.getColumnName(i));
     
    }
    columnNames.addElement("Check Box");
    while(resultat.next()){
     
       Vector row = new Vector(compteur + 1); 
     
       for(int i=1;i<=compteur;i++)
    {
    row.addElement( resultat.getObject(i) );
    }
       row.addElement(new JCheckBox().isFocusable());
       data.addElement( row ); 
     
    }
     
    table = new JTable(data,columnNames);
     
     
    panotable = new JPanel();
     
    panotable.setBounds(22,300,519,156);
    			panotable.setLayout(new BorderLayout());
    			panotable.setBackground(Color.gray);
     
    		js = new JScrollPane(table);
    		js.setPreferredSize(new Dimension(50,50));
    		panotable.add(js,BorderLayout.CENTER );
     
    		this.setContentPane(panotable);
     
            }
     
     
     
     
     
    }
    Quand j'exécute, au lieu d'avoir des cases à cocher j'ai des "true" qui s'affichent.

    Merci

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Par défaut, une JTable n'affiche que du texte. Pour faire d'autres formes d'affichage, il faut fournir tes propres TableCellRenderer et TableCellEditor.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    table.getColumnModel().getColumn(index).setCellRenderer(....) 
    table.getColumnModel().getColumn(index).setCellEditor(....)
    Plus d'infos sur la page officielle d'oracle:

    http://docs.oracle.com/javase/tutori....html#renderer
    http://docs.oracle.com/javase/tutori...le.html#editor

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Par défaut
    tu dois definir ton modèle:
    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
    package sms;
    import javax.swing.table.AbstractTableModel;
     
    public class MonModele extends AbstractTableModel{
    	private static final long serialVersionUID = 1L;
    	private String[] columnNames={"code","Noms et Prénoms","Numéro","Cocher"};
    	private Object[][] data=null;
    	public MonModele(Object[][] data){
    		this.data=data;
    	}
     
    	public int getColumnCount() {
            return columnNames.length;
        }
     
        public int getRowCount() {
            return data.length;
        }
     
        public String getColumnName(int col) {
            return columnNames[col];
        }
     
        public Object getValueAt(int row, int col) {
            return data[row][col];
        }
     
        public Class<?> getColumnClass(int columnIndex) {
        	if (columnIndex == 3) return Boolean.class;
        	else return String.class;
        }
     
        public boolean isCellEditable(int row, int col) {
            return col==3?true:false;
        }
        public void setValueAt(Object aValue, int row, int col) {
            if ( aValue instanceof Boolean) data[row][col]=(Boolean)aValue;
        }
    }
    et l'appliquer à ta table:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    		MonModele modele=new MonModele(data2);
    		table=new JTable(modele);

  4. #4
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Par défaut
    Ok j'ai essayé ce que tu m'as proposé mais le souci c"est que data2 est de type Vector:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonModel model = new MonModel(data2);
    J'ai essayé de convertir data2 en Object[][] mais la conversion d'un vector en un tableau à 2 dimensions est compliquée. J'ai cherché mais j'ai pas trouvé comment faire.

    Merci

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Ton Vector contient quoi? C'est un Vector<Object[]> ?

  6. #6
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Par défaut
    Voici un bout de code qui montre ce que contient mon vector:

    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
    public void afficheUser() throws ClassNotFoundException
            {
                try {
                    try {
                        state=Connexion.getInstance().createStatement();
                    } catch (SQLException ex) {
                        JOptionPane.showMessageDialog(null,"Erreur lors de la création de l'objet Statement!");
                    }             
               
                    resultat=state.executeQuery("select * from user");
                    ResultSetMetaData       resultatMD =resultat.getMetaData();
                    
         Vector data = new Vector();              
                   
    int compteur= resultatMD.getColumnCount();
     
    for(int i=1;i<=compteur;i++)
    {
    columnNames.addElement(resultatMD.getColumnName(i));
     
    }
    columnNames.addElement("Check Box");
    while(resultat.next()){
     
       Vector row = new Vector(compteur + 1); 
     
       for(int i=1;i<=compteur;i++)
    {
    row.addElement( resultat.getObject(i) );
    }
       row.addElement(new JCheckBox());
       data.addElement( row ); 
     
    }
    
    
    MonModel model = new MonModel(data);
    table = new JTable(model);

Discussions similaires

  1. Problème CheckBox dans JTable
    Par l4r3nZu dans le forum Composants
    Réponses: 2
    Dernier message: 28/05/2011, 14h02
  2. Valeur Checkbox dans JTable
    Par fred33 dans le forum Débuter
    Réponses: 1
    Dernier message: 26/07/2010, 09h47
  3. Réponses: 11
    Dernier message: 26/12/2009, 17h29
  4. Checkbox dans un JTable
    Par Spinoza23 dans le forum AWT/Swing
    Réponses: 12
    Dernier message: 19/01/2007, 14h21
  5. checkbox dans un JTable
    Par hbzied dans le forum Composants
    Réponses: 2
    Dernier message: 17/05/2006, 17h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo