Comment masquer les cellules d'une colonne d'une JTable

Signaler
Messages postés
1
Date d'inscription
mardi 27 janvier 2009
Statut
Membre
Dernière intervention
27 octobre 2011
-
Messages postés
7
Date d'inscription
mercredi 20 juillet 2011
Statut
Membre
Dernière intervention
28 octobre 2011
-
Bonjour,

Je fais une application qui gère des personnels d'un service avec une interface graphique Swing. Pour accéder à l'application, les personnels sont composés des groupes dont chaque groupe a des droits spécifiques. L'administrateur crée les compte de chaque personne et l'affecte à un groupe.

Ce que je voudrais est lorsqu'on veut lister les comptes des personnes dans un tableau (jtable), que la colonne qui contient les mots de passes soit masquée comme lors de la saisie avec jPasswordField.

Merci d'avance

4 réponses

Messages postés
7
Date d'inscription
mercredi 20 juillet 2011
Statut
Membre
Dernière intervention
28 octobre 2011
1
Salut,

Merci Julien39 pour votre réponse, justement je voudrais afficher des xxxxxx pour masquer les données de la colonne password.

Pour ce qui est du Renderer particulier, pourriez vous m'en dire un peu plus car je suis débutante en java surtout le graphisme avec swing.

Merci encore.
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
363
Bonjour,

Tu peux utiliser un JPasswordField pour cette colonne du tableau en utilisant un Renderer particulier, ce qui est assez complexe si tu ne sais pas le faire.

Cela dit, je ne pense pas que cette opération soit nécessaire, tu n'as qu'à afficher des xxxxx à la place du mot de passe, de toute façon, personne ne pourra lire le contenu alors, rien ne sert de faire des trucs compliqués, fonctionnellement et graphiquement, le résultat est équivalent.
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
363
Si tu écris les xxxx manuellement, tu n'as pas besoin de Renderer.

Le Renderer d'une JTable est un objet qui possède une méthode getTableCellRendererComponent qui retourne le composant qui correpond à une cellule de la table.

/**
 * @param table
 *     La table sur laquelle on applique le renderer
 * @param value
 *     La valeur à afficher dans la cellule
 * @param isSelected
 *     Booleen vrai si la cellule est selectionnee
 * @param hasFocus
 *     Booleen vrai si la cellule a le focus (peu utilisé)
 * @param row
 *     numéro de la ligne
 * @param column
 *     numéro de la colonne
 * @return le composant à afficher
 */
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)


Donc, si tu veux créer un Renderer qui fasse que la colonne i soit un JPasswordField, tu créé une classe MyRendererDecorator qui étend TableCellRenderer et qui contient un DefaultTableCellRenderer (renderer).

Ta méthode getTableCellRendererComponent est alors :

public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
     Component c = null;
     if(column!=5){     
          c = renderer.getTableCellRendererComponent(
               table, 
               value, 
               isSelected, 
               hasFocus, 
               row, 
               colums
          );
     }
     else{
          c=new JPasswordField(value.toString());
     }
     return c;
}


Si tu veux voir un exemple d'utilisation des Renderer : http://www.javafr.com/codes/JTABLE-CUSTOMISEE_53607.aspx
Messages postés
7
Date d'inscription
mercredi 20 juillet 2011
Statut
Membre
Dernière intervention
28 octobre 2011
1
Salut,

Merci beaucoup encore une fois. Je vais essayer le renderer et vous tiendrais au courant.