Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2015
    Messaggi
    31

    Password di lunghezza fissa

    Salve a tutti ragazzi, sto realizzando un programma in Java (sono alle prime armi) in cui ad un certo punto voglio che avvenga l'inserimento da tastiera di una password.
    In particolare, voglio che sia possibile proseguire nel programma solo se la password è di 8 caratteri, nè più nè meno.
    Ho inserito un PasswordField per l'inserimento, ed un bottone inizialmente disabilitato.
    Ho poi creato un evento "KeyTyped" sul PasswordField per abilitare il bottone solo se la lunghezza del capo inserito è di 8.
    Ma non funziona come vorrei: alla prima cancellazione di uno dei caratteri digitati, la lunghezza del campo rimane la stessa . Alla successiva cancellazione, la lunghezza viene decrementata.
    Qualcuno potrebbe spiegarmi dove sbaglio? Allego il codice (ho anche inserito una stampa a video della lunghezza del campo inserito per controllare la cosa).
    Grazie mille in anticipo.

    codice:
    private void passwordKeyTyped(java.awt.event.KeyEvent evt) {                                         
    System.out.println((password.getPassword().length)+1);
            if((password.getPassword().length)+1==8)
            saveKeyBtn.setEnabled(true);        
        }

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Naomi92 Visualizza il messaggio
    alla prima cancellazione di uno dei caratteri digitati, la lunghezza del campo rimane la stessa . Alla successiva cancellazione, la lunghezza viene decrementata.
    Perché se ben ricordo, l'evento keyTyped viene dispacciato prima che l'evento sia usato per aggiornare il testo interno del componente. Per queste cose keyTyped non va molto bene .... anche per un altro motivo: le operazioni di copia-incolla (es. tu copi un testo da qualunque parte e lo incolli sul tuo JPasswordField) NON passano per un KeyListener. Quindi lasceresti un "buco" per cui anche incollando 8 caratteri, non funzionerebbe.

    Per queste cose si prende il Document (da getDocument del componente di testo) e su quello si registra un DocumentListener. Qui ricevi notifica di qualunque modifica e soprattutto dopo che è già avvenuta nel componente.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.