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 - Couleur de séléction d'une ligne


Sujet :

Composants Java

  1. #1
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 38
    Par défaut JTable - Couleur de séléction d'une ligne
    Bonjour,

    J'ai un jtable, où je dispose dans la première colonne d'un JPanel.
    Le problème c'est que lorsque je sélectionne une ligne, toutes les cellules de la ligne changent la couleur de background sauf la cellule qui contient le jpanel.

    Donc je veux que la cellule qui contient le jpanel changera aussi la couleur de background.

    Merci.

  2. #2
    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 nabich Voir le message
    J'ai un jtable, où je dispose dans la première colonne d'un JPanel.
    Tu utilises un CellRenderer pour cela ? C'est donc lui qui doit se charger de cela...


    a++

  3. #3
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 38
    Par défaut
    Voici le code source de ma table.
    Fichiers attachés Fichiers attachés

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Beaucoup de "forumeurs" sont rebutés par des liens vers les sources et/ou une archive compressée. C'est à toi de faire l'effort de donner es informations concises et précises sur le problème rencontré
    Donne la partie de code qui te poses problème, à placer entre balises CODE
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  5. #5
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 38
    Par défaut
    Re-bonjour,

    Merci dinobogan pour la remarque, en fait j'ai mis le code source pour que vous puissiez voir le problème que j'avais décrit.

    Le problème est le suivant :
    J'ai un jtable, où je dispose dans la première colonne d'un JPanel.
    Le problème c'est que lorsque je sélectionne une ligne, toutes les cellules de la ligne changent la couleur de background sauf la cellule qui contient le jpanel.

    Donc je veux que la cellule qui contient le jpanel changera aussi la couleur de background.


    Pour voir le comportement, voir le code source de mon message précédent.

    Merci d'avance.

  6. #6
    Membre émérite Avatar de fraco
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 750
    Par défaut
    Merci dinobogan pour la remarque, en fait j'ai mis le code source pour que vous puissiez voir le problème que j'avais décrit.
    J'ai peur que tu n'aies pas compris le sens de sa remarque...
    C'est vrai qu'on a tendance à laisser tomber s'il faut aller chercher dans un fichier joint, ou même lire plus de vingt lignes de code dans une question.

  7. #7
    Membre actif Avatar de arafat877
    Inscrit en
    Septembre 2010
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 46
    Par défaut Solution
    Salut !
    Je te conseil de lite ce tutoriel : http://tahe.developpez.com/java/swing3tier/, il contient un JTable dont on ajouter un bouton.

    Je te conseil vivement de construire ton propre CellRenderer, cherche sur le net tu en trouvera pas mal d'articles, mais il serai en Anglais dans plupart des cas.

    Dans l'entreprise où je bosse, nous travaillons toujours avec les clients lourds construit grâce à Swing, malheureusement c'est interdit de communiquer quoi que ce soit, mais je vais essayer de te donner un code qui marche.

    Bon courage

  8. #8
    Membre actif Avatar de arafat877
    Inscrit en
    Septembre 2010
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 46
    Par défaut Solution
    Salut !
    Comme promis je viens de publier un intéressant article intitulé : Attractive JTable, je souhaite qu'il va t'aider d'avantage.

    N'oublie pas de me laisser un commentaire.

    Bon lecture !

  9. #9
    Membre actif Avatar de arafat877
    Inscrit en
    Septembre 2010
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 46
    Par défaut
    J'ai oublié de vous donnez l'adresse de mon blog : htt://attractive-java.blogspot.com, et n'oublier surtout pas de me laisser un message

  10. #10
    Membre chevronné Avatar de javaNavCha
    Homme Profil pro
    EKG Group
    Inscrit en
    Juillet 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Tunisie

    Informations professionnelles :
    Activité : EKG Group
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 311
    Par défaut
    Bonjour
    Essaies ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jtable.setSelectionForeground(Color.RED);

  11. #11
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 38
    Par défaut
    Bonjour,

    Merci pour votre participation "javacha4", mais c'est pas ça mon problème. Veuillez lire attentivement le problème.

    en plus : jtable.setSelectionBackground(Color.RED); ne marchera pas pour mon jpanel.

    SVP c très urgent.

    Merci.

  12. #12
    Membre expérimenté Avatar de DarkMolo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    207
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Maroc

    Informations forums :
    Inscription : Juillet 2006
    Messages : 207
    Par défaut
    Salut,

    Comme te l'a signalé @adiGuba, tu dois passer par ton CellRenderer, dans ce dernier, méthode "getTableCellRendererComponent", tu as bien un beau paramètre qui t'est passé isSelected, il te suffirait de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (argIsSelected) {
         tonPanel.setBackground(selectionBackgroundColor);
    } else {
         tonPanel.setBackground(normalBackgroundColor);
    }

  13. #13
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 38
    Par défaut Ajout des balises [code][/code], merci d'y penser
    En fait, j'utilise une solution pour l'instant, mais je veux une solution plus originale.

    La solution actuelle est :
    Dans la classe PanelRenderer, j'ai ajouté le couleur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @Override
      public Component getTableCellRendererComponent(JTable table, Object value,
          boolean isSelected, boolean hasFocus, int row, int column)
      {
        super.getTableCellRendererComponent(table, value, isSelected, hasFocus,
            row, column);
     
        JPanel p = (JPanel)value;
     
        if(isSelected)
          p.setBackground(table.getSelectionBackground());
        return p;
      }
    J'attends tjrs vos remarques et vos idées.
    Merci.

  14. #14
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 38
    Par défaut
    J'ai pas vu ta solution, Merci. vrm c'est ça ce que j'utilise. mais je veux une solution originale

  15. #15
    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
    Citation Envoyé par nabich Voir le message
    mais je veux une solution originale
    C'est quoi une "solution originale" ????


    a++

  16. #16
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 38
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    C'est quoi une "solution originale" ????


    a++
    C'est à dire sans utiliser comme ces astuces de colorisation.
    En plus, il y a des erreurs sur cette solution. si vous essayez de cliquer sur le panel, il ne prend pas la couleur de sélection.
    N'est ce pas?

  17. #17
    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
    Citation Envoyé par nabich Voir le message
    C'est à dire sans utiliser comme ces astuces de colorisation.
    En gros tu voudrais coloriser mais sans coloriser...

    Citation Envoyé par nabich Voir le message
    En plus, il y a des erreurs sur cette solution. si vous essayez de cliquer sur le panel, il ne prend pas la couleur de sélection.
    N'est ce pas?
    Cela devrais marcher (et cela marche chez moi sur un exemple simple)

    Citation Envoyé par nabich Voir le message
    N'est ce pas?
    Ce qui est pas très propre, c'est d'avoir un composant graphique dans ton TableModel... Il devrait contenir uniquement les données couplé avec un CellRenderer représentant ton composant.


    a++

  18. #18
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 38
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    En gros tu voudrais coloriser mais sans coloriser...


    Cela devrais marcher (et cela marche chez moi sur un exemple simple)


    Ce qui est pas très propre, c'est d'avoir un composant graphique dans ton TableModel... Il devrait contenir uniquement les données couplé avec un CellRenderer représentant ton composant.


    a++
    bonjour,

    Moi je veux coloriser le JPanel quand je clique sur la ligne (y compris la cellule qui contient le panel). Comment ça marche chez toi? si tu essai de cliquer sur la cellule de panel, le panel ne se colore pas avec la couleur de sélection.
    Pour ça ne marche pas!!!!
    Je suis d'accord avec toi sur la solution qui n'était pas propre, mais moi je voudrai adopter cette manière de résolution (vue mes contraintes).

    Donc le problème tjrs persiste.

    Merci pour votre aide.

  19. #19
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 38
    Par défaut
    Enfin

    J'ai résolu ce problème de colorisation.

    Dans le renderer, il faut mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @Override
      public Component getTableCellRendererComponent(JTable table, Object value,
          boolean isSelected, boolean hasFocus, int row, int column)
      {
        super.getTableCellRendererComponent(table, value, isSelected, hasFocus,
            row, column);
     
        JPanel p = (JPanel)value;
     
        if(isSelected)
          p.setBackground(table.getSelectionBackground());
        return p;
      }
    et dans l'editor :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
          panel = (JPanel)value;
          panel.setBackground(table.getSelectionBackground());
          return panel;
      }
    Merci à tous pour votre collaboration

  20. #20
    Membre chevronné Avatar de javaNavCha
    Homme Profil pro
    EKG Group
    Inscrit en
    Juillet 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Tunisie

    Informations professionnelles :
    Activité : EKG Group
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 311
    Par défaut
    Y a pas de quoi
    C'est comme ça quand apprend ensemble

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

Discussions similaires

  1. Comment changer la couleur de fond d'une ligne du TRichEdit
    Par tibi666 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 28/09/2005, 17h31
  2. [JTable] Modifier la couleur de fond d'une ligne
    Par joes_bushi dans le forum Composants
    Réponses: 2
    Dernier message: 20/09/2005, 12h13
  3. [JTable] problème après suppression d'une ligne
    Par fredo3500 dans le forum Composants
    Réponses: 7
    Dernier message: 17/03/2005, 10h01
  4. [JTable] rendre la sélection d'une ligne impossible
    Par norkius dans le forum Composants
    Réponses: 6
    Dernier message: 14/12/2004, 09h50
  5. [JTable] couleur de sélection dans une JTable
    Par spoutyoyo dans le forum Composants
    Réponses: 7
    Dernier message: 06/12/2004, 11h43

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