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

AWT/Swing Java Discussion :

[JXTable] Afficher CheckBox plutot que true/false


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 64
    Par défaut [JXTable] Afficher CheckBox plutot que true/false
    Bonjour,

    J'utilise une JXTable et j'aimerais qu'une JCheckBox soit affichée plutot que la valeur true ou false.

    Pour cela, j'ai fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    column = m_tableMembre.getColumnModel().getColumn(7);
    column.setCellRenderer(new CheckBoxRenderer());
    Avec la classe CheckBoxRenderer :

    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
     
    public class CheckBoxRenderer extends JCheckBox implements TableCellRenderer {
     
    	public CheckBoxRenderer() {
     
    	}
     
    	/* (non-Javadoc)
    	 * @see javax.swing.table.TableCellRenderer#getTableCellRendererComponent(javax.swing.JTable, java.lang.Object, boolean, boolean, int, int)
    	 */
    	@Override
    	public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
    		this.setSelected((Boolean) value);
    		return this;
    	}
    }
    Mais malheureusement ça ne focntionne pas.

    Qu'est-ce que j'ai fais de faux ou qu'est-ce qu'il manque ?

    Merci d'avance

  2. #2
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 64
    Par défaut
    En fait j'ai trouvé...

    Je n'aurais pas pensé qu'il fallait juste overridder la méthode getColumnClass du model

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public Class<?> getColumnClass(int columnIndex) {
    		return getValueAt(0, columnIndex).getClass();
    	}

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 84
    Par défaut
    Bonsoir,
    Te serait il possible d'expliciter d'avantage ta solution car j'ai besoin de faire la même chose que toi.
    Merci d'avance

  4. #4
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Il te suffit d'utiliser un Model pour ta JTable héritant de DefaultTableModel et redéfinissant la méthode getrColumnClass tel que précisé au dessus

  5. #5
    Membre chevronné Avatar de xixi31
    Inscrit en
    Juin 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juin 2005
    Messages : 423
    Par défaut
    un petit exemple :

    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
     
    public class Main
    {
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args)
        {
            SwingUtilities.invokeLater(new Runnable()
            {
                public void run()
                {                
                    JFrame frame = new JFrame();
                    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
     
                    JTable table = new JTable();
                    table.setModel(new DefaultTableModel(new Object[][]{{1, "a", true}, {2, "b", false}},
                                                  new Object[]{"int", "string", "boolean"})
                            );
     
                    table.getColumnModel().getColumn(2).setCellRenderer(new CheckBoxRenderer());
     
                    frame.getContentPane().add(new JScrollPane(table));
     
                    frame.pack();
                    frame.setVisible(true);
                }
            });
        }
     
        private static class CheckBoxRenderer extends JCheckBox implements TableCellRenderer {
     
                public CheckBoxRenderer() {
     
                }
     
                /* (non-Javadoc)
                 * @see javax.swing.table.TableCellRenderer#getTableCellRendererComponent(javax.swing.JTable, java.lang.Object, boolean, boolean, int, int)
                 */
                public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
                        this.setSelected((Boolean) value);
                        return this;
                }
        }
    }
    pas besoin d'une surcharge du getColumnClass dans ce cas puisque tu associes le TableCellRenderer directement à la colonne dans le ColumnModel.

  6. #6
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 84
    Par défaut
    Merci je vais tester çà !!!

  7. #7
    Invité de passage
    Inscrit en
    Mai 2010
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 1
    Par défaut clic sur un noeud d'une JXTreeTable
    Bonjour à tous,

    je viens de découvrir le composant JXTreeTable et j'ai besoin qu'un évènement se déclanche au clic sur un noeud, mais je ne sais pas comment faire.
    quelqu'un pourrait-il m'aider ?

    merci d'avance.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 02/03/2010, 13h16
  2. J'utilise une table JExcelTable qui m'affiche true / false au lieu d'un checkBox
    Par mourmfih dans le forum Interfaces Graphiques en Java
    Réponses: 0
    Dernier message: 06/10/2009, 14h32
  3. afficher la valeur d'une clé étrangère plutot que le nom
    Par titoumimi dans le forum Ruby on Rails
    Réponses: 7
    Dernier message: 12/03/2007, 09h23
  4. Afficher des mots plutot que des nombres
    Par rolan dans le forum Access
    Réponses: 2
    Dernier message: 05/01/2007, 11h37
  5. Afficher des mots plutot que des nombres
    Par rolan dans le forum Access
    Réponses: 3
    Dernier message: 04/01/2007, 22h45

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