JOptionPane pour obtenir le mot de passe
JOptionPane
peut être utilisé pour obtenir de la chaîne des entrées de l'utilisateur, mais dans mon cas, je souhaite afficher un champ de mot de passe dans showInputDialog
.
La manière dont j'ai besoin est l'entrée de données par l'utilisateur doivent être masquées et la valeur de retour doit être dans char[]
. J'ai besoin d'une boîte de dialogue avec un message, un champ de mot de passe, et de deux boutons. Peut-on le faire? Merci.
Vous devez vous connecter pour publier un commentaire.
Oui, il est possible d'utiliser
JOptionPane.showOptionDialog()
. Quelque chose comme ceci:La chose la plus facile est d'utiliser
JOptionPane
'sshowConfirmDialog
méthode et de passer une référence à unJPasswordField
; par exemple,Modifier
Ci-dessous est un exemple en utilisant un custom
JPanel
pour afficher un message avec leJPasswordField
. Par le commentaire le plus récent, j'ai aussi (à la hâte) ajouté du code pour permettre laJPasswordField
à obtenir le focus lorsque la boîte de dialogue est affichée pour la première fois.JOptionPanel
j'ai juste remplacéselectInitialValue()
à{ passwordField.requestFocusInWindow() }
Il n'est pas clair pourquoi vous êtes en évitant invoquantrequestFocusInWindow()
plus d'une fois. Aussi, je pense que vous avez écritloginPnl
où vous signifiaitpPnl
.selectInitialValue()
semble faire de même. Je ne vois pas l'avantage d'un 13-solution en ligne qui implique un nouveau champ, une méthode nouvelle, et l'ajout d'un écouteur à la boîte de dialogue.String showDialog
méthodes. Ceux-ci contiennent la logique montré dans lemain
méthode etmain
contient simplement un appel àshowDialog
.Vous pouvez créer vous êtes propre boîte de dialogue qui s'étend JDialog et puis vous pouvez mettre ce que vous voulez dedans.
Ce dialogue semble beaucoup mieux si vous ne
Sans que vous ne pouvez pas la voir du tout.
Aussi
devrait être
Autre que cela fonctionne très bien. Merci pour le code. J'ai gagné du temps face avec Swing.
Aussi, si vous ne voulez pas quitter le dialogue exécuter en arrière-plan chaque fois que vous l'ouvrez, vous aurez besoin de le fermer avec quelque chose comme
La classe suivante est une extension de Adamski la grande réponse:
Un Kotlin solution basée sur Adamski réponse.
Cette fois sans boutons qui nécessite de la concentration, il suffit d'entrer le mot de passe et appuyez sur Entrée, ou d'Échapper à jeter entrée:
Utilisation:
PasswordPanel.requestPassword(passwordIdentifier)