Como implementar em Java (class JTextField) para permitir a input de apenas dígitos?

Como implementar em Java (class JTextField ) para permitir a input de apenas dígitos?

Adicione um DocumentFilter ao documento (simples) usado no JTextField para evitar dígitos não.

 PlainDocument doc = new PlainDocument(); doc.setDocumentFilter(new DocumentFilter() { @Override public void insertString(FilterBypass fb, int off, String str, AttributeSet attr) throws BadLocationException { fb.insertString(off, str.replaceAll("\\D++", ""), attr); // remove non-digits } @Override public void replace(FilterBypass fb, int off, int len, String str, AttributeSet attr) throws BadLocationException { fb.replace(off, len, str.replaceAll("\\D++", ""), attr); // remove non-digits } }); JTextField field = new JTextField(); field.setDocument(doc); 

Use uma implementação Document cujo método insertString filtre os caracteres não insertString .

Use esta class, e chame-a onde você precisar validar o seu nome jtexField como parâmetro.

  exm:- setNumericOnly(txtMSISDN); here txtMSISDN is my jtextField. public static void setNumericOnly(JTextField jTextField){ jTextField.addKeyListener(new KeyAdapter() { public void keyTyped(KeyEvent e) { char c = e.getKeyChar(); if ((!Character.isDigit(c) || (c == KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_DELETE))) { e.consume(); } } }); } 

Experimente este DocumentFilter :

 import javax.swing.text.*; import java.awt.*; public class IntegerDocumentFilter extends DocumentFilter { private AbstractDocument abstractDocument; private IntegerDocumentFilter(AbstractDocument abstractDocument) { this.abstractDocument = abstractDocument; } @Override public void replace(FilterBypass filterBypass, int offset, int length, String input, AttributeSet attributeSet) throws BadLocationException { int inputLength = input.length(); String text = abstractDocument.getText(0, abstractDocument.getLength()); int newLength = text.length() + inputLength; if (isNumeric(input) && newLength < = 8) { super.replace(filterBypass, offset, length, input, attributeSet); } else { Toolkit.getDefaultToolkit().beep(); } } private boolean isNumeric(String input) { String regularExpression = "[0-9]+"; return input.matches(regularExpression); } public static void addTo(JTextComponent textComponent) { AbstractDocument abstractDocument = (AbstractDocument) textComponent.getDocument(); IntegerDocumentFilter integerDocumentFilter = new IntegerDocumentFilter(abstractDocument); abstractDocument.setDocumentFilter(integerDocumentFilter); } } 

Uso:

 IntegerDocumentFilter.addTo(myTextField);