使用documentFilter:
NumberOnlyFilter.java:
import javax.swing.*;import javax.swing.text.*;import java.util.regex.*;public class NumberonlyFilter extends documentFilter{ public void insertString(documentFilter.FilterBypass fb, int offset, String text, AttributeSet attr) throws BadLocationException { StringBuilder sb = new StringBuilder(); sb.append(fb.getdocument().getText(0, fb.getdocument().getLength())); sb.insert(offset, text); if(!containsOnlyNumbers(sb.toString())) return; fb.insertString(offset, text, attr); } public void replace(documentFilter.FilterBypass fb, int offset, int length, String text, AttributeSet attr) throws BadLocationException { StringBuilder sb = new StringBuilder(); sb.append(fb.getdocument().getText(0, fb.getdocument().getLength())); sb.replace(offset, offset + length, text); if(!containsOnlyNumbers(sb.toString())) return; fb.replace(offset, length, text, attr); } public boolean containsOnlyNumbers(String text) { Pattern pattern = Pattern.compile("([+-]{0,1})?[\d]*"); Matcher matcher = pattern.matcher(text); boolean isMatch = matcher.matches(); return isMatch; }}然后您可以像这样使用它:
((Abstractdocument)yourTxtField.getdocument()).setdocumentFilter(new NumberonlyFilter());



