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 :

JTable / Cellrender / selection rows


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 105
    Par défaut JTable / Cellrender / selection rows
    Bonjour,

    j'ai une question concernant les JTable et les TableCellRenderer.

    Actuellement, j ai une jtable de 3 colones et une colone editable.
    Je souhaite que lorsque l'utilisateur clique sur une des cell d'un meme row, tout le row soit selectionne.

    Or, en imposant un cellrenderer a toutes les cells du tableau, j ai perdu la possibilite de faire des selection de row, seule la cell sur laquelle j ai clicke s'highlight et est selectionee et je ne peux plus faire de selection multiple de row.

    J'ai essaye de jouer avec les isSelected et isFocus de telle sorte a forcer la selection mais rien... enfin si... la j ai plus du tout de couleur si je fais ca.

    Voici le code de mon cellrenderer:

    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
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int rowIndex, int vColIndex) {
     
                // 'value' is value contained in the cell located at (rowIndex, vColIndex)
     
                String cellName = (String)value;
                setText(cellName);
                setFont(f);
                setOpaque(true);
     
                //If column is the first or the last one, set border length, text alignement and JLabel Icons:
                if(vColIndex == 0) {
                    setBorder(border1);
                    //If "Parent Directory", set a specific icon:
                    if(cellName.equals("Parent Directory")) setIcon(icon);
                    else {
                       fileEntry fe = completeList.get(cellName);
                       setIcon(fe.getIcon());
                    }
                }
                else if(vColIndex == (table.getColumnCount()-1)) {
                    setBorder(border1);
                    setHorizontalAlignment(JLabel.LEFT);
                } 
                else {
                    setBorder(border2);
                    setHorizontalAlignment(JLabel.RIGHT);
                }
     
                if (isSelected) {
     
                    this.setBackground(UIManager.getColor("Table.selectionBackground"));
                    this.setForeground(UIManager.getColor("Table.selectionForeground"));
                }
     
                if (hasFocus) {
     
                   this.setBackground(UIManager.getColor("Table.selectionBackground"));
                   this.setForeground(UIManager.getColor("Table.selectionForeground"));
                }
                else {
                   this.setBackground(UIManager.getColor(Color.WHITE));
                   this.setForeground(UIManager.getColor(Color.WHITE));
                }
     
                // Since the renderer is a component, return itself
                return this;
            }
     
            // The following methods override the defaults for performance reasons
            public void validate() {}
            public void revalidate() {}
            protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {}
            public void firePropertyChange(String propertyName, boolean oldValue, boolean newValue) {}
        }
    Merci pour votre aide,

    Antoin.e

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 19
    Par défaut
    regarde l'implementation de la classe DefaultCellRenderer fournit par Swing et recupere le contenu de la methode getTableCellRendererComponent. Tu rajoute ton code pour la couleur a la suite. Sinon tu herite de DefaultCellRenderer et tu fait un appel a super() dans ton constructeur.

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 105
    Par défaut
    Je te remercie bien !

    J'avais trouve apres de longues heures de recherche !

    Bonne journee,

    Antoine

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

Discussions similaires

  1. Jtable : Couleur de row en fonction d'une valeur de cell
    Par Damascus dans le forum Composants
    Réponses: 5
    Dernier message: 30/06/2011, 15h17
  2. JTable et selection multiple
    Par ldcarpathes dans le forum Composants
    Réponses: 4
    Dernier message: 05/04/2007, 11h16
  3. jTable et et row
    Par nutix2003 dans le forum NetBeans
    Réponses: 6
    Dernier message: 12/10/2006, 23h13
  4. [jTable] Multi selection sur jtable
    Par doudine dans le forum Composants
    Réponses: 5
    Dernier message: 15/03/2006, 15h00
  5. JTable et selection
    Par biozaxx dans le forum Composants
    Réponses: 2
    Dernier message: 19/01/2006, 11h48

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