Premesso che la cosa non è simpatica dal punto di vista dell'utente (non è come con le date che si possono utilizzare i segnaposto per i caratteri corrispondenti al giorno/mese/anno che serve a guidare l'utente) vedersi cambiare a video un numero mentre lo sta digitando, comunque la cosa può essere fatta senza nemmeno utilizzare una JFormattedTextField, ma una banale JTextField: basta settargli un Document che sia in grado di modificare "al volo" il contenuto da inserire in modo che lo renda "formattato":
codice:public class MyIntegerDocument extends PlainDocument { private static final NumberFormat nf = NumberFormat.getIntegerInstance( Locale.ITALIAN ); @Override public void insertString(int offs, String str, AttributeSet a) throws BadLocationException { if (str == null) { return; } if ( !str.matches("\\d+") ) return; String myText = getText(0, getLength()).replaceAll("\\.","") + str; int myVal = Integer.parseInt( myText ); myText = nf.format( myVal ); super.remove(0, getLength()); super.insertString(0, myText, a); } }
Settando il Document di esempio in una JTextField dovresti avere il risultato cercato, ad esempio:
codice:JTextField txt = new JTextField(); txt.setDocument( new MyIntegerDocument() ); txt.setPreferredSize( ... );
Il Document proposto effettua anche un minimo di "validazione" dell'input: accetta solo cifre (non caratteri diversi).
Ciao.![]()



Rispondi quotando
