Ho buttato giù due righe di codice in due minuti, questa soluzione ha un problema: se inserisci tramite copia e incolla una stringa che contiene sia numeri che altri caratteri l'intera stringa viene rifiutata mentre l'ideale sarebbe inserire solo i numeri di quella stringa, non dovrebbe essere difficile migliorarla in queto senso, lo lascio a tecodice:import java.awt.FlowLayout; import javax.swing.JFrame; import javax.swing.JTextField; import javax.swing.text.AttributeSet; import javax.swing.text.BadLocationException; import javax.swing.text.PlainDocument; public class OnlyNumbersTextField extends JTextField { /** * */ private static final long serialVersionUID = 8554350982699149972L; /** * @param args */ public static void main(String[] args) { JFrame frame = new JFrame(); frame .setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLocationRelativeTo(null); frame.getContentPane().setLayout(new FlowLayout()); frame.getContentPane().add(new OnlyNumbersTextField(10)); frame.pack(); frame.setVisible(true); } /* * Costruttore con unico parametro il limite della textfield */ public OnlyNumbersTextField(int cols) { super(cols); setDocument(new TextLimitDocument()); } /*************************************************************************** * Classe interna per la gestione dell'input **************************************************************************/ private class TextLimitDocument extends PlainDocument { /** * */ private static final long serialVersionUID = 5408078764971166982L; /* * Funzione per l'inserimento della stringa nella textfield */ public void insertString(int offset, String str, AttributeSet attr) throws BadLocationException { boolean invalid = false; if (str == null) return; if (!str.matches("[0-9]*")) return; super.insertString(offset, str, attr); } } }![]()