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

sabah09 Messages postés 1 Date d'inscription mardi 27 janvier 2009 Statut Membre Dernière intervention 27 octobre 2011 - 27 oct. 2011 à 12:23
cs_sabaha Messages postés 7 Date d'inscription mercredi 20 juillet 2011 Statut Membre Dernière intervention 28 octobre 2011 - 28 oct. 2011 à 20:42
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

cs_sabaha Messages postés 7 Date d'inscription mercredi 20 juillet 2011 Statut Membre Dernière intervention 28 octobre 2011 1
27 oct. 2011 à 21:16
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.
1
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 369
27 oct. 2011 à 17:00
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.
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 369
28 oct. 2011 à 08:05
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
0
cs_sabaha Messages postés 7 Date d'inscription mercredi 20 juillet 2011 Statut Membre Dernière intervention 28 octobre 2011 1
28 oct. 2011 à 20:42
Salut,

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