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][CellRenderer] couleur d"une ligne sélectionnée [FAQ]


Sujet :

Composants Java

  1. #1
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 031
    Points : 23 763
    Points
    23 763
    Par défaut [JTable][CellRenderer] couleur d"une ligne sélectionnée
    Bonjour,

    J'utilise une JTable avec des colonnes pour lesquelles j'ai eu besoin de redéfinir le CellRenderer (notamment pour centrer les valeurs).
    Le problème, c'est que une fois redéfini mon TableCellRenderer, je perds la couleur bleu foncé (dont je ne connais pas la valeur RVB au passage ) sur la cellule sélectionnée.

    Je souuhaite donc réimplémenter cette couleur sur toute la ligne sélectionnée.

    Comment dois-je m'y prendre ? J'ai essayé avec setBackground() dans mon renderer mais tout ce que j'obtient c'est de colorer toutes les cases de la table qui utilisent ce renderer.

    Merci de votre aide,

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  2. #2
    Nouveau Candidat au Club
    Inscrit en
    Août 2002
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Si tu étends DefaultTableCellRenderer, il faut juste que conserve le comportement de base dans le cas où la cellule a la focalisation. Ainsi, tu dois pouvoir faire quelque chose dans le genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    if (hasFocus) 
       return super.getTableCellRendererComponent ( ...)
    Dans la méthode getTableCellRenderComponent (...)

    Je pense que ca doit marcher ...

    /hermann
    http://hrangamana.free.fr

  3. #3
    Inactif
    Inscrit en
    Juillet 2002
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    T'étais pas loin mais en fait c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    jTable.setSelectionBackground(color);

  4. #4
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 031
    Points : 23 763
    Points
    23 763
    Par défaut
    Le problème vient du fait que j'étends JLabel en implémentant TableCellRenderer. De ce fait, le super.getTableCellRendererComponent() ne fonctionne pas puisque super désigne JLabel.

    C'est dans cette fonction de mon renderer que je ne parvient pas a définir le bon comportement pour recolorer toute ma ligne.

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  5. #5
    Inactif
    Inscrit en
    Juillet 2002
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Ca marche pas ma proposition?

  6. #6
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 031
    Points : 23 763
    Points
    23 763
    Par défaut
    Non, je mets bien le jTable.setSelectionBackground(color); dans mon cellRenderer. J'ai essayé toutes les combinaisons possibles de setOpaque(), mais la couleur ne réapparait pas.

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  7. #7
    Inactif
    Inscrit en
    Juillet 2002
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    T'as passer à un repaint() ?

  8. #8
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 031
    Points : 23 763
    Points
    23 763
    Par défaut
    J'ai essayé avec le repaint, mais ça ne marche toujours pas.

    Voici le code (j'aurais peut-être dû démarrer par là) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class LeftRenderer extends JLabel implements TableCellRenderer {
      public LeftRenderer() {
        super();
      }
      public Component getTableCellRendererComponent(JTable table, Object, value, boolean isSelected, boolean hasFocus, int row, int column) {
        setText("  " + value.toString());
        setHorizontalAlignment(LEFT);
        setOpaque(true);
        _tblConges.setSelectionBackground(Color.BLUE);
        _tblConges.repaint();
        return(this);
      }
    }
    Jouer sur le setOpaque() n'y change rien.

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  9. #9
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut Re: [JTable][CellRenderer] couleur d"une ligne sélectio
    Citation Envoyé par ced
    Bonjour,

    J'utilise une JTable avec des colonnes pour lesquelles j'ai eu besoin de redéfinir le CellRenderer (notamment pour centrer les valeurs).
    Le problème, c'est que une fois redéfini mon TableCellRenderer, je perds la couleur bleu foncé (dont je ne connais pas la valeur RVB au passage ) sur la cellule sélectionnée.

    Je souuhaite donc réimplémenter cette couleur sur toute la ligne sélectionnée.

    Comment dois-je m'y prendre ? J'ai essayé avec setBackground() dans mon renderer mais tout ce que j'obtient c'est de colorer toutes les cases de la table qui utilisent ce renderer.

    Merci de votre aide,

    ced
    En fait la première solution était presque la bonne...

    il faut faire un setBackground() dans ton renderer que si la ligne est sélectionnée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class LeftRenderer extends JLabel implements TableCellRenderer { 
      public LeftRenderer() { 
        super(); 
      } 
      public Component getTableCellRendererComponent(JTable table, Object, value, boolean isSelected, boolean hasFocus, int row, int column) { 
        setText("  " + value.toString()); 
        setHorizontalAlignment(LEFT); 
        setOpaque(true); 
        if (isSelected)
               setBackground(Color.BLUE); 
        return(this); 
      } 
    }
    Je te conseille aussi d'utiliser javax.swing.table.DefaultTableCellRenderer plutot qu'un TableCellRenderer dans ton cas... (DefaultTableCellRenderer correspond a un JLabel qui implemente TableCellRenderer et quelque methodes...)

    pour la couleur de la selection, je pense que tu peux la recuperer en faisant un maJTable.getSelectionBackground()...

    nota: La fonction setSelectionBackground() n'a aucun effet si un CellRenderer est utilisé...

    a++

  10. #10
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 031
    Points : 23 763
    Points
    23 763
    Par défaut
    Merci beaucoup pour l'aide, tout fonctionne correctement désormais.

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/03/2014, 12h08
  2. Réponses: 3
    Dernier message: 23/10/2013, 10h25
  3. avoir une ligne sélectionné par défaut dans un jtable
    Par minanoun dans le forum Composants
    Réponses: 4
    Dernier message: 12/04/2009, 19h15
  4. [JTable] problème après suppression d'une ligne
    Par fredo3500 dans le forum Composants
    Réponses: 7
    Dernier message: 17/03/2005, 10h01
  5. [JTable] rendre la sélection d'une ligne impossible
    Par norkius dans le forum Composants
    Réponses: 6
    Dernier message: 14/12/2004, 09h50

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