Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di paul78
    Registrato dal
    Apr 2010
    Messaggi
    515

    JPasswordField...solo num...

    ciao a tutti!! come faccio ad imporre di scrivere solo numeri interi????

    ho una JPasswordField e vorrei che scrivesse solo numeri interi...come faccio???

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Non ho guardato l'API, ma non credo si possa fare. Devi crearti una tua implementazione, potresti estendere JPasswordField e verificare ogni carattere inserito (ci sono gli appositi Listener, si tratta solo di implementarlo ed effettuare la verifica).

  3. #3
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Un modo semplice è impostare un InputVerifier. Te ne abbozzo uno al volo:

    codice:
    JPasswordField passwordField = new JPasswordField();
    passwordField.setInputVerifier(new InputVerifier() 
    {
        @Override
        public boolean verify(JComponent input) 
        {
            char[] password = ((JPasswordField) input).getPassword();
    
            for (char c : password ) 
            {
                if (!Character.isDigit(c))
                {
                    return false;
                }
            }
    
            return true;
        }
    });
    Documentazione: http://docs.oracle.com/javase/6/docs...tVerifier.html

    Una volta che l'utente inizia a scrivere qualcosa nel JPasswordField, questo non mollerà il focus finché verify() non restituirà true.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Un alternativa meno drastica (con InputVerifier l'utente è bloccato nella casella finché non "risponde correttamente") è settare un Document al JPasswordField:

    codice:
    JPasswordField passwordField = new JPasswordField();
    passwordField.setDocument(new PlainDocument() 
    {
        @Override
        public void insertString(int offs, String str, AttributeSet a) throws BadLocationException 
        {
            try 
            {
                Integer.parseInt(str);
                super.insertString(offs, str, a);
            } 
            catch (NumberFormatException ex) 
            {
                // fregate di quello che accade qui
                System.out.println("not a number");
            }
        }
    });
    Documentazione: http://docs.oracle.com/javase/6/docs...nDocument.html
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Il secondo caso è praticamente ciò a cui mi riferivo io solo che non ricordavo il metodo.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.