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] Surcharger -> getRowClass()


Sujet :

Composants Java

  1. #1
    Membre éclairé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Par défaut [JTable] Surcharger -> getRowClass()
    Bonjour tout le monde !

    J'aimerais savoir si quelqu'un à une piste sur la façon dont je pourrais redéfénir une JTable pour ne plus gérer mes Renderer et Editor en fonction de la colonne (via la méthode getColumnClass) mais en fonction de leur ligne (via une nouvelle méthode que j'appellerai getRowClass()).

    Malheureusement je ne vois pas trop par quel bout commencer... ni comment je vais pouvoir forcer ma JTable à appeler cette méthode plutôt que le getColumnClass() lors de l'affichage.

    Par avance, Merci pour votre aide et vos conseils.

  2. #2
    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

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 548
    Par défaut
    J'avais fait un renderer qui fait ce que tu veux mais pour une JList :

    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
    public class MultiClassListCellRenderer extends DefaultListCellRenderer {
        private static final long serialVersionUID = -4635807145551371854L;
     
        Map<Class, ListCellRenderer> renderers;
     
        public MultiClassListCellRenderer(Map<Class, ListCellRenderer> renderers) {
            this.renderers = renderers;
        }
     
        @Override
        public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
            if (value != null) {
                ListCellRenderer renderer = renderers.get(value.getClass());
                if (renderer != null) {
                    return renderer.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
                }
            }
     
            return super.getListCellRendererComponent(
                    list,
                    value,
                    index,
                    isSelected,
                    cellHasFocus);
        }
    }
    L'idée c'est d'associer un renderer par classe. Suivant ta hierarchie ça peut être plus facile de faire des 'instanceof' plutôt que d'utiliser une Map.
    Tu dois pouvoir l'adapter sans difficulté à une JTable (TableCellRenderer au lieu de ListCellRenderer).

Discussions similaires

  1. Réponses: 5
    Dernier message: 24/04/2003, 11h47
  2. [SWING]jTable + Focus
    Par chady dans le forum Composants
    Réponses: 5
    Dernier message: 27/02/2003, 14h51
  3. Réponses: 8
    Dernier message: 20/11/2002, 11h50
  4. JBuilder7 & JTable Colonne alignement
    Par Tonton Luc dans le forum JBuilder
    Réponses: 5
    Dernier message: 06/11/2002, 17h32
  5. Réponses: 9
    Dernier message: 12/08/2002, 07h38

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