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

 Java Discussion :

Colorer une ligne précise d'un jtable


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2013
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 29
    Par défaut Colorer une ligne précise d'un jtable
    Bonjour , je cherche à colorer une quelque ligne de mon jtable avec une condition ,les lignes dont la valeur de "Quantité_disponible" est négative .
    voici mon code mais malheureusement ca marche pas

    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
    void colorer(){    
    try {
     
     
                Connection conn;
                    Class.forName("com.mysql.jdbc.Driver");
                    conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/stage","root","admin");
     
                    Statement pst=conn.createStatement();
     
                    ResultSet rs=pst.executeQuery("SELECT * from article where Qte_dispo<=0 ");
     
               while(rs.next()){
    String add4=rs.getString("Qte_dispo");
    int qte=Integer.parseInt(add4);
     
               if(qte<0) {
                      table_article.setBackground(Color.red);
                   }}
                } catch (Exception ev)
                {
                    System.out.println(ev);
                }}

  2. #2
    Membre extrêmement actif
    Avatar de MarieKisSlaJoue
    Homme Profil pro
    Ingénieur Cloud
    Inscrit en
    Mai 2012
    Messages
    1 145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Roumanie

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

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 145
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String add4=rs.getString("Qte_dispo");
    int qte=Integer.parseInt(add4);
    De mémoire tu peux extraire un int avec rs.getInt("Qte_dispo") plutôt de faire ton truc en 2 fois (De mémoire toujours d'ailleurs la première ligne dois donner une erreur.)

    Quand tu dis "ça ne marche pas" ça veut dire ? Une exception est levé ? Aucune ligne n'est colorié ?

    As-tu tenté de débuger pour connaitre la valeur de qte avant le if ?
    Ce post à été écrit par un panda
    Apollo 11 - AGC revue de code
    -- qwerty keybord

  3. #3
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    tu dois modifier ton renderer pour faire ça.

    Les renderers s'associent normalement à des cellules, soit via les index de colonnes, soit via les types des données de ces colonnes.

    Comme tu veux une couleur pour ta ligne entière, soit tu indiques le (même) renderer pour chaque colonne, soit tu procèdes par surcharge comme pour l'exemple donné du WeirdRenderer.

    Juste un truc à penser si tu étends le javax.swing.table.DefaultTableCellRenderer (ce qui est la manière la plus classique), les couleurs modifiées par setForeground et setBackground sont mémorisées entre appels : donc il faut toujours prévoir de faire un reset de la couleur par défaut (celle de la jtable).

    Exemple :

    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
    public Component getTableCellRendererComponent(JTable table,
    					Object value, boolean isSelected, boolean hasFocus,
    					int row, int column) {
       Component component = super.getTableCellRendererComponent(table, value, isSelected, hasFocus,
    						row, column);
     
       if( !isSelected && getQuantiteDisponible(value)<0 ) {
          setBackground( COLOR_QTE_NEG );
       }
       else {
          setBackground(table.getBackground());
       }
     
       return component;
    }
    bien sûr COLOR_QTE_NEG est une constante à définir et getQuantiteDisponible() est une méthode à définir en fonction de tes données.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  4. #4
    Membre averti
    Inscrit en
    Juin 2013
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 29
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Salut,

    tu dois modifier ton renderer pour faire ça.

    Les renderers s'associent normalement à des cellules, soit via les index de colonnes, soit via les types des données de ces colonnes.

    Comme tu veux une couleur pour ta ligne entière, soit tu indiques le (même) renderer pour chaque colonne, soit tu procèdes par surcharge comme pour l'exemple donné du WeirdRenderer.

    Juste un truc à penser si tu étends le javax.swing.table.DefaultTableCellRenderer (ce qui est la manière la plus classique), les couleurs modifiées par setForeground et setBackground sont mémorisées entre appels : donc il faut toujours prévoir de faire un reset de la couleur par défaut (celle de la jtable).

    Exemple :

    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
    public Component getTableCellRendererComponent(JTable table,
    					Object value, boolean isSelected, boolean hasFocus,
    					int row, int column) {
       Component component = super.getTableCellRendererComponent(table, value, isSelected, hasFocus,
    						row, column);
     
       if( !isSelected && getQuantiteDisponible(value)<0 ) {
          setBackground( COLOR_QTE_NEG );
       }
       else {
          setBackground(table.getBackground());
       }
     
       return component;
    }
    bien sûr COLOR_QTE_NEG est une constante à définir et getQuantiteDisponible() est une méthode à définir en fonction de tes données.
    je te remercie tout d'abord de ton attention , j'ai trouvé partout que je dois utiliser ces randers mais j'en ai vraiment aucune idée et j'ai pas su les utiliser .
    mon problème c'est que j'ai un jtable lié à une BDD et je veux colorier les lignes de cette table dont la quantité disponible est négative . je te prie de bien vouloir m'aider parce que c'est urgent

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Tout est expliqué dans le lien que je t'ai indiqué :

    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
    finalTableCellRenderer renderer = new DefaultTableCellRenderer() {
    public Component getTableCellRendererComponent(JTable table,
    					Object value, boolean isSelected, boolean hasFocus,
    					int row, int column) {
       Component component = super.getTableCellRendererComponent(table, value, isSelected, hasFocus,
    						row, column);
     
       if ( isSelected ) {
          setBackground(table.getSelectionBackground());
       } else if( getQuantiteDisponible(value)<0 ) {
          setBackground( Color.RED );
       }
       else {
          setBackground(table.getBackground());
       }
     
       return component;
    }
     
    };
    table = new JTable(...) {
        public TableCellRenderer getCellRenderer(int row, int column) {
            return renderer;
        }
    };
    Pour le getQuantiteDisponible ça dépend de comment tu as modélisé.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. Colorer une ligne JTable selon une bdd
    Par Bladelight dans le forum Composants
    Réponses: 1
    Dernier message: 12/08/2010, 11h10
  2. [Débutant] Colorer une ligne dans une Jtable
    Par flora32 dans le forum Composants
    Réponses: 3
    Dernier message: 11/01/2009, 13h47
  3. Comment "colorer" une ligne dans formulaire en col
    Par pyxosledisciple dans le forum IHM
    Réponses: 5
    Dernier message: 09/02/2006, 12h29
  4. lire une ligne précise d'un fichier
    Par loic_86 dans le forum Langage
    Réponses: 1
    Dernier message: 06/01/2006, 13h37
  5. [HTML] Se placer à une ligne précise dans un tableau
    Par seb55555 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 28/10/2004, 15h06

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