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 :

Lignes de couleurs alternées


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 343
    Par défaut Lignes de couleurs alternées
    Bonsoir,

    J'ai cherche à créer une table dont les lignes s'affichent selon 2 couleurs alternatives. Quelques exemples glanés sur le Net proposent ce principe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public class RenduCouleurAlternee extends DefaultTableCellRenderer {
      public Component getTableCellRendererComponent(JTable LaTable, Object Valeur, boolean isSelected, boolean hasFocus, int ligne, int colonne) {
    /etc.../
    Le souci est que j'ai aussi défini des 'Renderer' par colonnes, du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public class CRenduColonneNumero extends DefaultTableCellRenderer {
      public CRenduColonneNumero() { setHorizontalAlignment(RIGHT); }
    }
    N'y a-t-il pas de risque de téléscopage entre le rendu par colonne, et le rendu par cellule ?
    Peut être faut-il gérer la couleur de fond dans le 'Renderer' des colonnes ? Mais dans ce cas, le problème est de gérer le numéro de la ligne...

    Je ne vois pas comment résoudre ce problème. Quelqu'un a-t-il une idée ?

    Merci & @ bientôt.

  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
    Par défaut
    Ou alors tu gardes le renderer Standard et tu gère ça via la propriété suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UIManager.put("Table.alternateRowColor", new Color(200, 200, 200));

  3. #3
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par sinok Voir le message
    Ou alors tu gardes le renderer Standard et tu gère ça via la propriété suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UIManager.put("Table.alternateRowColor", new Color(200, 200, 200));
    Ce qui devrait fonctionner également en héritant du DefaultTableCellRenderer si on appelle bien le super.getTableCellRendererComponent() (et qu'on ne change pas la couleur de fond bien évidement).

    a++

  4. #4
    Membre Expert Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 343
    Par défaut
    Merci à vous deux,

    ce n'est pas la première fois que vous me sortez de l'ornière.

    @ bientôt.

  5. #5
    Membre Expert Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 343
    Par défaut
    Pour info, j'ai découvert que le Look & Feel Nimbus propose par défaut l'affichage par couleurs alternées d'une JTable.
    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
    public static void main(String[] args)
    {
      // Tentative de mise en place du Look & Feel Nimbus
      for (UIManager.LookAndFeelInfo LookFeel: UIManager.getInstalledLookAndFeels())
      {
        if ("Nimbus".equals(LookFeel.getName()))
        {
          try
          {
            UIManager.setLookAndFeel(LookFeel.getClassName());
          }
          catch (Exception e)
          {
            // On ne change rien
          }
        }
      }
     
      new MaClassePrincipale().setVisible(true);
    }
    Avis aux intéressés...
    @ bientôt

  6. #6
    Membre Expert Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 343
    Par défaut
    Encore une petite question à ce sujet:

    d'où tenez-vous l'information
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UIManager.put("Table.alternateRowColor", ...
    J'ai regardé dans la documentation Sun, je ne sais pas comment vous savez qu'il faut écrire cette clé, et la valeur. Parce que si cela se trouve, il y a plein d'autres possibilités...mais lesquelles ?
    Où trouvet-t-on la doc sur ce sujet ?

    Merci & @ bientôt.

  7. #7
    Membre Expert Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 343
    Par défaut
    C'est encore moi

    j'ai trouvé un utilitaire pas piqué des vers à cette adresse :http://tips4java.wordpress.com/2008/...ager-defaults/

    On constate que selon le Look & Feel, les clés affectées aux composants ne sont pas les mêmes.
    Ainsi, on remarque que la clé "Table.alternateRowColor" n'existe pas pour tous les styles.

    Ce qui fait que je ne peux pas m'appuyer sur l'UIManager pour gérer la couleur alternée des lignes d'une JTable...et me revoilà au point de départ.
    Il faut donc que j'implémente un truc "à la main" pour donner cet effet.

    C'est pas gagné...

  8. #8
    Membre Expert 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
    Par défaut
    Eventuellement, tu peux utiliser le pattern Decorator pour composer tes différents Renderer.
    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
    public abstract class DecoratorTableCellRenderer implements TableCellRenderer {
     
       private TableCellRenderer wrappee;
     
       public DecoratorTableCellRenderer(TableCellRenderer wrappee) {
          this.wrappee = wrappee;
       }
     
       public final Component getTableCellRendererComponent(
                                 JTable table, Object valeur,
                                 boolean isSelected, boolean hasFocus,
                                 int ligne, int colonne) {
     
          Component c = wrappee.getTableCellRendererComponent(
                                 table, valeur,
                                 isSelected, hasFocus,
                                 ligne, colonne);
          customizeCellRenderer(c,
                                 table, valeur,
                                 isSelected, hasFocus,
                                 ligne, colonne);
          return c;
       }
     
       protected abstract void customizeCellRenderer(
                                 Component c,
                                 JTable table, Object valeur,
                                 boolean isSelected, boolean hasFocus,
                                 int ligne, int colonne);
    }
    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
    public class RenduCouleurAlternee extends DefaultTableCellRenderer {
    /etc.../
     
    public class CRenduColonneNumero extends DecoratorTableCellRenderer {
     
       public CRenduColonneNumero(TableCellRenderer wrappee) {
          super(wrappee);
       }
     
       @Override
       protected void customizeCellRenderer(
                                 Component c,
                                 JTable table, Object valeur,
                                 boolean isSelected, boolean hasFocus,
                                 int ligne, int colonne) {
          JLabel label = (JLabel) c;
          label.setHorizontalAlignment(SwingConstants.RIGHT);
       }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TableCellRenderer renduAligneEtCouleurAlternee =
       new CRenduColonneNumero(new RenduCouleurAlternee());

  9. #9
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par rtg57 Voir le message
    Ainsi, on remarque que la clé "Table.alternateRowColor" n'existe pas pour tous les styles.
    "Table.alternateRowColor" est utilisé par DefaultTableCellRenderer, et donc indépendant du LnF

    a++

  10. #10
    Membre Expert Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 343
    Par défaut
    Merci à vous pour votre aide

    @ bientôt

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

Discussions similaires

  1. TableCellRenderer et couleur alternée des lignes d'un JTable
    Par aliasjcdenton dans le forum Composants
    Réponses: 2
    Dernier message: 20/06/2011, 09h15
  2. Comment avoir des lignes de couleur alternée
    Par michelp38 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/04/2011, 16h29
  3. Couleur Alternée des lignes de Tableau
    Par kfmystik dans le forum Deski
    Réponses: 2
    Dernier message: 05/02/2009, 11h32
  4. [Tableaux] Couleur alternative ligne d'un tableau
    Par BenoitDenis dans le forum Langage
    Réponses: 4
    Dernier message: 29/03/2006, 16h46
  5. [C#] Comment mettre une ligne en couleur dans mon DataGrid ?
    Par vandeyy dans le forum Windows Forms
    Réponses: 7
    Dernier message: 19/07/2004, 11h03

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