如何在Java(JTextField类)中实现只允许输入数字?

Dam*_*mir 12 java swing jtextfield

如何在Java(JTextField类)中实现只允许输入数字?

use*_*421 17

将DocumentFilter添加到JTextField中使用的(Plain)文档以避免非数字.

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);
Run Code Online (Sandbox Code Playgroud)