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 :

Colorier cellules jTable


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 78
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Par défaut Colorier cellules jTable
    Bonjour à tous,
    Oui, je sais c'est un problème récurrent. J'ai été visiter les réponses sur ce forum et sur d'autres. J'ai essayé de comprendre et d'adapter les solutions proposées et ça ne marche pas.
    Mon problème: Colorier (disons en rouge) les cellules de toute une ligne ET de toute une colonne (sans aucun rapport avec la sélection courante).
    Je souhaite par exemple colorier en rouge (couleur de fond), toutes les cellules de la ligne 1 et de la colonne 1.
    Voici les extraits des deux fichiers:
    Code java : 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
    public class MyTableCellRenderer extends DefaultTableCellRenderer {
     
        int L;
        int C;
        private static final long serialVersionUID = 1L;
     
        public MyTableCellRenderer(int ligne, int colonne) {
            super();
            L = ligne;
            C = colonne;
        }
     
        @Override
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
            super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
            if (row == L || column == C) {
                setBackground(Color.red); //Ca devrait colorier en rouge tous les cellules ligne L colonne C
            }
     
     
            return this;
        }
    }
    Code java : 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
    public class Mineurs extends java.applet.Applet {
     
        /** Initializes the applet Mineurs */
        public void init() {
            try {
                java.awt.EventQueue.invokeAndWait(new Runnable() {
                    public void run() {
                        initComponents();
                    }
                });
            } catch (Exception ex) {
                ex.printStackTrace();
            }
            jScrollPane1.setColumnHeader(null);
            jScrollPane1.setSize(200, 72);
            jTable1.setColumnSelectionAllowed(true);
            jTable1.setDefaultRenderer(Object.class, new MyTableCellRenderer(1,1));
     
            //jTable1.setRowSelectionInterval(1, 3);
     
        }
    A l'exécution tout est rouge sauf la cellule (0,0) ???
    Si quelqu'un peut m'expliquer où est l'erreur.
    Merci d'avance.
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  2. #2
    Membre émérite Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Par défaut
    salut,

    le problème c'est que tu définis le background pour l'objet renderer quand la condition est vérifié, mais tu ne remets pas la couleur pa défaut dans les autres cas.

    un truc du genre devrait marcher

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ..................
           if (row == L || column == C) {
                setBackground(Color.red); 
            } else {
                setBackground(Color.WHITE); 
            }
    ..............

  3. #3
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 78
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Par défaut
    YES !!!!
    Merci Herch pour ta réponse rapide et pertinente.
    Résolu
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  4. #4
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 78
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Par défaut
    Voilà, cette solution a fonctionné, quelques heures.
    J'ai fait quelques changements, ajouté de nouvelles tables et quelques contrôles.
    Je n'ai rien touché à la table impliquée, ni à la classe MyTableCellRenderer et cela ne fonctionne plus.
    Incompréhensible ...
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  5. #5
    Membre émérite Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Par défaut
    on pourrait voir le nouveau code ??

    et quand tu dis ça ne marche pas, cela veut dire qu'il y a des erreurs ou juste que les cellules ne se colorent plus??

  6. #6
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 78
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Par défaut
    Cela veut dire qu'il n'y a plus de couleur. La console java ne signale aucune erreur
    Voici le code:
    Code java : 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
    import javax.swing.table.DefaultTableCellRenderer;
    import java.awt.Component;
    import javax.swing.JTable;
    import java.awt.Color;
     
    public class MyTableCellRenderer extends DefaultTableCellRenderer {
     
        int L;
        int C;
        private static final long serialVersionUID = 1L;
     
        public MyTableCellRenderer(int ligne, int colonne) {
            super();
            L = ligne;
            C = colonne;
        }
     
        @Override
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
            super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
            if (row == L || column == C) {
                setBackground(Color.red);
            } else {
                setBackground(Color.WHITE);
            }
     
            return this;
        }
    }
    Code java : 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
     
    public class Mineurs extends java.applet.Applet {
     
        /** Initializes the applet Mineurs */
        @Override
        public void init() {
            try {
                java.awt.EventQueue.invokeAndWait(new Runnable() {
                    public void run() {
                        initComponents();
                    }
                });
            } catch (Exception ex) {
                ex.printStackTrace();
            }
            jScrollPane1.setColumnHeader(null);
            jScrollPane2.setColumnHeader(null);
            jScrollPane3.setColumnHeader(null);
            jTable1.setColumnSelectionAllowed(true);
            jTable1.setDefaultRenderer(Object.class, new MyTableCellRenderer(1,1));
     
     
        }
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

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

Discussions similaires

  1. Colorier cellule JTable
    Par totot dans le forum Composants
    Réponses: 7
    Dernier message: 03/05/2015, 22h14
  2. JTable Colorier cellules
    Par JannyBoop dans le forum Débuter
    Réponses: 2
    Dernier message: 16/02/2010, 23h14
  3. [JTABLE] Colorier cellule selon sa valeur: 2 problemes
    Par Terminator dans le forum Composants
    Réponses: 1
    Dernier message: 29/05/2007, 00h39
  4. Colorier Cellule / ligne sélectionnée dans JTable
    Par Sebou77 dans le forum Composants
    Réponses: 7
    Dernier message: 06/09/2006, 13h04
  5. Colorier cellule du tableau
    Par Blast dans le forum AWT/Swing
    Réponses: 22
    Dernier message: 10/04/2006, 17h54

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