Bonjour, comment fait - on pour enlever le surlignement d'une ligne dans un jtable, svp?
Bonjour, comment fait - on pour enlever le surlignement d'une ligne dans un jtable, svp?
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.
Est-ce que tu utilises un TableCellRenderer ? C'est peut etre ce que tu cherches.
Et si tu postais le code de ton renderer ?
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); }
Bonjour,
Ton problème vient de là :
Si la cellule n'est pas sélectionné, la couleur de fond du composant retourné ne sera pas colorié.
Code : Sélectionner tout - Visualiser dans une fenêtre à part return super.getTableCellRendererComponent(table,value,isSelected,hasFocus,row,column);
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.
Voilà, ça devrait fonctionner ainsi (enfin, j'espère, j'ai pas testé )
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; }
ok, je vais tester , merci
et ouai c'est çà, merci beaucoup deverdeb.
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:
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?
Code : Sélectionner tout - Visualiser dans une fenêtre à part Component retour = super.getTableCellRendererComponent(table,value,isSelected,hasFocus,row,column);
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!
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager