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

最佳答案

将DocumentFilter添加到JTextField中使用的(普通)Document中,以避免出现非数字。

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);

09-04 03:40
查看更多