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] Colorier une cellule


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2004
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2004
    Messages : 528
    Par défaut [jTable] Colorier une cellule
    Bonjour à tous,

    Je souhaite colorier une cellule selon une valeur int que j'ai.

    Je veux 3 couleurs (bleu, noir et rouge).
    Si mon int est <20, alors je colorie la cellule en bleu
    si compris entre 20 et 50, je colorie en noir,

    sinon, je colorie en rouge.

    Je ne sais pas comment faire ca.
    J'ai lu qu'il y avait les rendered, mais je ne les comprends pas trop
    MERCI

  2. #2
    Membre éclairé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2004
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2004
    Messages : 528
    Par défaut
    personne ne voit?

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 159
    Par défaut
    Je pense que tu es obligé d'utiliser des renderers, mais rassure-toi c'est pas si difficile .
    Vas voir le tutorial de Sun, si tu comprend pas revient...
    http://java.sun.com/docs/books/tutor...tml#editrender

  4. #4
    Membre éclairé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2004
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2004
    Messages : 528
    Par défaut
    Merci pour le lien,

    je viens de lire, mais sincèrement, je ne comprends pas tout (j'ai un peu de mal)!!

    D'apres ce que je comprends, je crée un 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
    31
    32
    public class ColorRenderer extends JLabel
                               implements TableCellRenderer {
        ...
        public ColorRenderer(boolean isBordered) {
            this.isBordered = isBordered;
            setOpaque(true); //MUST do this for background to show up.
        }
     
        public Component getTableCellRendererComponent(
                                JTable table, Object color,
                                boolean isSelected, boolean hasFocus,
                                int row, int column) {
            Color newColor = (Color)color;
            setBackground(newColor);
            if (isBordered) {
                if (isSelected) {
                    ...
                    //selectedBorder is a solid border in the color
                    //table.getSelectionBackground().
                    setBorder(selectedBorder);
                } else {
                    ...
                    //unselectedBorder is a solid border in the color
                    //table.getBackground().
                    setBorder(unselectedBorder);
                }
            }
     
            setToolTipText(...); //Discussed in the following section
            return this;
        }
    }
    Mais après ,comment on l'utilise?
    Cad comment je fais pour que ce soit compatile avec mon cas?

    Pour tout vous dire, j suis un peu dépassé par la théorie! Je n'arriva pas à voir comment ca fonctionne cette histoire!
    On surcharge une methode? On redéfinit une methode??

    D'avance merci pour votre aide

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 159
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public Component getTableCellRendererComponent(
                                JTable table, Object color,
                                boolean isSelected, boolean hasFocus,
                                int row, int column) {
    }
    En fonction des valeurs qu'on te donne en parametre, tu cree un composant et te le renvoi dans ton return. Si la classe hérite d'un composant comme dans ton cas un JLabel, tu peux retourner this après avoir fait quelques modifications.

  6. #6
    Membre Expert
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public Component getTableCellRendererComponent(
                                JTable table, Object color,
                                boolean isSelected, boolean hasFocus,
                                int row, int column) {
    }
    C'est simple : cette fonction va te permettre de renvoyer le composant de ton choix pour la case definie par les variables row et column. En gros, tu peux faire un test pour voir si tu te situes à la case 2:1 par exemple et décider de renvoyer un composant de type JLabel (toujours par exemple) et y définir les propriétes que tu veux.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public Component getTableCellRendererComponent(
                                JTable table, Object color,
                                boolean isSelected, boolean hasFocus,
                                int row, int column) {
     
        JLabel la_case = new JLabel();
     
        if (column == 2 && row == 1) la_case.setBackground(Color.red);
        else la_case.setBackground(Color.white);
     
        return la_case;
    }
    Tu peux également tester si cette case est sélectionnée (paramètre isSelected) et mettre des couleurs en conséquence.

Discussions similaires

  1. [JTable] colorier une cellule désignée
    Par sam_saa dans le forum Composants
    Réponses: 2
    Dernier message: 26/05/2007, 16h42
  2. [JTable] Colorier une cellule d'une JTable
    Par Houssem dans le forum Composants
    Réponses: 1
    Dernier message: 15/05/2007, 14h54
  3. [JTable] Sélectionner une cellule
    Par GENERYS dans le forum Composants
    Réponses: 2
    Dernier message: 12/10/2005, 15h57
  4. [CR8.5][VS2002]Colorier une cellule
    Par San Soussy dans le forum SDK
    Réponses: 2
    Dernier message: 13/09/2005, 12h39

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