Ca marche mais je ne comprend pas pourquoi
Bonjours,
J'esseyais depuis quelques temps de definir un JPasswordField afin de remplacer mon pathétique :
Code:
1 2
|
JTextField myPassword=new JTextField(); |
par un plus sophistiqué
Code:
1 2
|
JPasswordField myPassword=new JPasswordField(); |
Mais une fois la password donné, je devais l'utiliser pour fabriquer mon url JDBC. Et la, la méthode myPassword.getPassword() me retournait la version cryptée. Idem si j'utilisais la fonction myPassword.getTExt(), c'etait toujours la version cryptée.
La solution pour que le password apparaisse cryptée à l'ecran mais fournisse un string en clair avec myPassword.getTExt() passe par :
Code:
1 2
|
private JTextField myPassword= new JPasswordField(); |
Et là, je ne comprend pas: mypassword est bien un JTextField, donc que le getText() me retourne un String clair, ok.
Mais pourquoi alors la fonction de crytpage à l'écran fonctionne ? Après tout 'myPassword' est un JTextField.
Et plus généralement, comment savoir qu'elle seront les future propriété d'une variable d"'un type classe instantiée quand on fait une declaration du genre:
Code:
1 2
|
Ancetre myVar = new DerieveAncetre() ; |
Qu'elle seront les fonctionalités de myVar qui seront du type Ancetre ?
Dans ce cas qui nous occupe, On pourrait dire que pour toutes les fonctions qui sont définie dans JTextField et JPasswordField, ce sont les fonctions de JTextFied qui seront reprise et si une fonction n'est pas definie dans JTextField mais existe dans JPasswordField, alors cette fonctions aussi est dispo.
Ainsi j'explique pourquoi l'input a l'ecran est crypté.
Helas, si ce raisonnement etait correct, alors la fonctionalité qui crypte le password, aurait du crypter aussi bien pour le display (ce qu'elle fait) que le getText (ce qu'elle ne fait pas).
Du coup, je suis un peu perdu et je comprend que je ne comprend pas réellement cette déclaration "JTextField var=new JPasswordField()":aie: