Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    95

    JTextField per inserire numeri reali

    Ciao a tutti!

    Ho una JTextField che vorrei che accettasse esclusivamente numeri reali. In altre parole vorrei che accettasse solo i numeri e il carattere "." . Come posso fare che se l'utente inserisce un altro carattere che non va bene, questo non viene nemmeno scritto?
    Grazie infinite in anticipo!

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    41
    che non venga nemmeno scritto non so se è possibile, se mai puoi mettere un listener sul componente e dirgli che ogni volta che cambia testo (non so quale sia l'evento giusto, ma potrebbe andar bene anche un focusLost) faccia dei controlli sul formato e se non è quello giusto riassegna al componente come testo (txtfield.setText("")) la stringa vuota... però secondo me dovresti accompagnare la cosa ad esempio con un setVisible di una label di errore, se no l'utente si vede scomparire il testo digitato e non sa perché...
    comunque per dirgli che il testo non è del formato giusto, non so se funziona, ma così a intuito potresti uare un metodo di parsing che trasfomra il testo in numero, gestendolo con un try-catch : infatti se non è una stringa riconoscibile come numero, il metodo di parsing genera un'eccezione.

  3. #3
    Puoi definire un tuo Document personalizzato che estende ad esempio PlainDocument . All'interno del tuo Document ridefinisci il metodo:
    codice:
    public void insertString (int offset, String  str, AttributeSet attr) throws BadLocationException
    str rappresenta il carattere inserito dall'utente, pertanto se questo è un . oppure un numero lo inserisci richiamando il metodo insertString della classe superiore (super.insertString(offset, str, attr); ), altrimenti non fai nulla.


    Poi sul tuo JTextField richiami il metodo setDocument passandogli come parametro una istanza del tuo Document personalizzato.

    Al mio segnale... scatenate l'inferno!

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.