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] Comment enlever le surlignement d'une ligne


Sujet :

Composants Java

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 14
    Points : 10
    Points
    10
    Par défaut [jTable] Comment enlever le surlignement d'une ligne
    Bonjour, comment fait - on pour enlever le surlignement d'une ligne dans un jtable, svp?

  2. #2
    Membre à l'essai
    Inscrit en
    Mars 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    pas de réponse???

    je pense que c'est possible : l'idée c'est que j'utilise une jtable où je colorie le fond de mes lignes en fonctions des valeurs de leurs cellules.
    Le problème, c'est quand je clique sur une ligne, celle-ci est surligner d'une couleur bleu, qui cache les couleur de mes cellules.

    Donc je voudrais enlever le fait de coloriser une ligne en la sélectionnant.

  3. #3
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Est-ce que tu utilises un TableCellRenderer ? C'est peut etre ce que tu cherches.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  4. #4
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    Et si tu postais le code de ton renderer ?

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    ok voila le code : j'ai une appli qui me permet d'exporter des fichiers. Avant l'exportation, il est possible de modifier le nom de ces fichiers. C'est pourquoi, je les affiche dans ce tableau:

    col 1 (nom fichier) | col 2 (éditable pour saisir le nomveau nom)
    -------------------------------------------------------------------------------------


    dans la colonne d'édition lorsque l'utilisateur saisi un nom de fichier, je vérifie dans le cellRenderer que le nom est valide (pas de caractère interdit , pas de nom existant dans le dossier cible) j'attribue donc une couleur de fond de cellule en cas d'erreur. un fond jaune pour les caractère interdit et un fond rouge pour un nom existant.

    voici mon render:

    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
     
    			    public Component getTableCellRendererComponent(JTable table,Object value,boolean isSelected,boolean hasFocus,int row,int column){
     
    			        String texte = value.toString();
    			        Document doc = (Document)listDocs.elementAt(row);
    			        String extension = doc.getURL().substring(doc.getURL().lastIndexOf('.'));
    			        String urldirdoc = doc.getURL().substring(0, doc.getURL().lastIndexOf("\\") + 1) + texte + extension;
     
    			        if(column == 1){
     
    		                if (!myTools.verifRename(texte)) {
    		                    setBackground(new java.awt.Color(255,51,51));
     
    		                }
    		                else if (myTools.dplc(cheminPlan, texte + extension)){
    		                    setBackground(new java.awt.Color(255,255,102));
     
    		                }
    		                else if (row%2==0) {
    		                    setBackground(new java.awt.Color(220,220,220));
    		                }
    		                else {
    		                    setBackground(new java.awt.Color(255,250,222));
    		                }
    			    	}
    			        else{
    			            setBackground((row%2==0)?new java.awt.Color(220,220,220):new java.awt.Color(255,250,222));
    			        }
    			        return super.getTableCellRendererComponent(table,value,isSelected,hasFocus,row,column);
    			    }

  6. #6
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2005
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2005
    Messages : 64
    Points : 368
    Points
    368
    Par défaut
    Bonjour,

    Ton problème vient de là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return super.getTableCellRendererComponent(table,value,isSelected,hasFocus,row,column);
    Si la cellule n'est pas sélectionné, la couleur de fond du composant retourné ne sera pas colorié.
    Si la cellule est sélectionné, le couleur de fond sera modifié et ton traitement précédent n'aura donc servi à rien.

    Je te conseille plutôt de faire le super.getTableCellRendererComponent(...) avant de faire ton traitement.

    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
    33
    34
    public Component getTableCellRendererComponent(JTable table,Object value,boolean isSelected,boolean hasFocus,int row,int column){
     
       //D'abord, récupérer le composant :
       Composant retour = super.getTableCellRendererComponent(table,value,isSelected,hasFocus,row,column);
     
       // Ton traitement...                  
     
       //Modifier la couleur
       if(column == 1){
          if (!myTools.verifRename(texte)) {
             //Appliquer les modification sur le composant de retour
            retour.setBackground(new java.awt.Color(255,51,51));
          }
          else if (myTools.dplc(cheminPlan, texte + extension)){
              //Appliquer les modification sur le composant de retour
              retour.setBackground(new java.awt.Color(255,255,102));
          }
          else if (row%2==0) {
              //Appliquer les modification sur le composant de retour
              retour.setBackground(new java.awt.Color(220,220,220));
          }
          else {
              //Appliquer les modification sur le composant de retour
              retour.setBackground(new java.awt.Color(255,250,222));
          }
       }
       else{
            //Appliquer les modification sur le composant de retour
            retour.setBackground((row%2==0)?new java.awt.Color(220,220,220):new java.awt.Color(255,250,222));
       }
     
       //retourner le composant
       return retour;
    }
    Voilà, ça devrait fonctionner ainsi (enfin, j'espère, j'ai pas testé )

  7. #7
    Membre à l'essai
    Inscrit en
    Mars 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    ok, je vais tester , merci

  8. #8
    Membre à l'essai
    Inscrit en
    Mars 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    et ouai c'est çà, merci beaucoup deverdeb.

  9. #9
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 87
    Points : 55
    Points
    55
    Par défaut
    Désolé de remonter un si vieux sujet mais disons que j'ai un soucis similaire, je viens de tester le code proposé mais en fait Eclipse me met une erreur sur cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Component retour = super.getTableCellRendererComponent(table,value,isSelected,hasFocus,row,column);
    Et je comprends pas vraiment pourquoi... en fait je me dis que je ne peux pas utiliser une fonction que je suis en train de définir, si?
    Bref, si quelqu'un peut m'aider, je lui en serais très reconnaissant!
    Merci d'avance et bonne journée à tous!

    EDIT: je tiens à préciser que eclipse ne me propose rien du tout comme solution intuitive!

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

Discussions similaires

  1. [TListview] Comment enlever la sélection d'une ligne
    Par Leesox dans le forum Composants VCL
    Réponses: 2
    Dernier message: 03/10/2008, 21h04
  2. Réponses: 10
    Dernier message: 25/06/2008, 13h54
  3. Comment enlever un mot d'une chaine?
    Par benjiprog dans le forum C
    Réponses: 8
    Dernier message: 21/04/2006, 17h00
  4. Réponses: 8
    Dernier message: 17/03/2006, 08h06
  5. Réponses: 7
    Dernier message: 28/06/2005, 11h53

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