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] Changer le style de certaines cellulles


Sujet :

Composants Java

  1. #1
    Membre du Club
    Inscrit en
    Juin 2003
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 54
    Points : 44
    Points
    44
    Par défaut [JTable] Changer le style de certaines cellulles
    Salut, j'ai une jtable et j'aimerais avoir des cellules avec des fonds ou des ecritures differentes.
    je pensais avoir trouvé avec les methodes getDefaultRenderer puis getTableCellRendererComponent, mais je n'y arrive pas.
    Si j'ai bien compris, il faudrait associer aux cellules des Renderer différents...

  2. #2
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    Tu peux associer aux cellules des renderer différents de plusieurs manières :
    - soit par colonne de la table
    pour une colonne donnée, toutes les cellules de la colonne sont affichées de la même façon, en utilisant le renderer associé à la colonne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jTable.getColumnModel().getColumn(column).setCellRenderer(renderer);
    - soit par type de cellule
    toutes les cellules de la table du type donné sont affichées de la même façon, en utilisant le renderer par défaut défini pour le type.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jTable.setDefaultRenderer(Type.class, renderer);
    - soit, enfin, pour chacune des cellules, mais cela nécessite d'hériter de JTable pour redéfinir la méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public TableCellRenderer getCellRenderer(int row, int column);

  3. #3
    Membre du Club
    Inscrit en
    Juin 2003
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 54
    Points : 44
    Points
    44
    Par défaut
    Merci, ca marche pour redefinir les colonnes, mais par contre je n'ai pas bien compris comment faire pour chacune des cellules...
    je dois faire une nouvelle classe qui herite de jtable et redefinir public TableCellRenderer getCellRenderer(int row, int column); ?
    Et que dois faire cette methode ?

  4. #4
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    C'est exactement cela qu'il faut faire
    ben la méthode getCellRenderer() doit renvoyer le renderer à utiliser pour la cellule à l'emplacement row, column.
    Par exemple, il peut s'agir d'une seule et même instance d'une classe implémentant TableCellRenderer, dont tu modifies certaines caractéristiques en fonction de row et/ou column.
    Par exemple, ci-dessous, les cases en diagonale sont colorées en rouge.
    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
    DefaultTableCellRenderer renderer = new DefaultTableCellRenderer() {
      public Component getTableCellRendererComponent(JTable table, Object value,
                              boolean isSelected, boolean hasFocus, int row, int column) {
        super.getTableCellRendererComponent(JTable table, Object value,
                              boolean isSelected, boolean hasFocus, int row, int column);
        if (row == column && !isSelected) {
          setBackground(Color.RED);
        }
        return this;
      }
    };
     
    public TableCellRenderer getCellRenderer(int row, int column) {
      return renderer;
    }

  5. #5
    Membre du Club
    Inscrit en
    Juin 2003
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 54
    Points : 44
    Points
    44
    Par défaut
    ca y est ca marche, j'ai rajouté 2 attributs a la nouvelle classe pour definir les cellules a modifier, pour pouvoir selectionner dynamiquement les cellules.

    Merci beaucoup !!

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

Discussions similaires

  1. Fonction pour changer le style d'une cellule à partir d un formulaire
    Par J_help dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/03/2011, 15h18
  2. changer la couleurs de certaines cellules datagridview
    Par pbatty1 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 15/03/2010, 16h49
  3. Réponses: 2
    Dernier message: 18/12/2005, 21h10
  4. [JTable] Changer la couleur d'une cellule
    Par Freak49 dans le forum Composants
    Réponses: 1
    Dernier message: 06/10/2005, 18h11
  5. Changer le style d'une cellule
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2005, 16h18

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