如何设置具有输入长度和范围的DocumentFilter?例如1-3或10-80

如何设置具有输入长度和范围的DocumentFilter?例如1-3或10-80,第1张

如何设置具有输入长度和范围的DocumentFilter?例如1-3或10-80

您可能想测试一下(我还没有测试过),但是基本思路应该可以帮助您入门。

同时查看文档过滤器示例

至于设置的最小长度,你可能想使用

InputVerifier
,以及

class MyIntFilter extends documentFilter {    private int maxLength = 0;    public void setMaxLength(int maxLength) {        this.maxLength = maxLength;    }    public int getMaxLength() {        return maxLength;    }    public void insertString(FilterBypass fb, int offset, String string,         AttributeSet attr) throws BadLocationException {        document doc = fb.getdocument();        StringBuilder sb = new StringBuilder();        sb.append(doc.getText(0, doc.getLength()));        sb.insert(offset, string);        if (maxLength > 0 && doc.getLength() + string.length() <= maxLength) { if (test(sb.toString())) {     super.insertString(fb, offset, string, attr); } else {     // warn the user and don't allow the insert }        }    }    private boolean test(String text) {        try { Integer.parseInt(text); return true;        } catch (NumberFormatException e) { return false;        }    }    @Override    public void replace(FilterBypass fb, int offset, int length, String text,         AttributeSet attrs) throws BadLocationException {        document doc = fb.getdocument();        StringBuilder sb = new StringBuilder(2);        sb.append(doc.getText(0, doc.getLength()));        sb.replace(offset, offset + length, text);        if (test(sb.toString())) { if (sb.length() > maxLength) {     length = sb.length() - maxLength;     if (length > 0) {         text = text.substring(0, length);         super.replace(fb, offset, length, text, attrs);     } }        } else { // warn the user and don't allow the insert        }    }    @Override    public void remove(FilterBypass fb, int offset, int length)         throws BadLocationException {        document doc = fb.getdocument();        StringBuilder sb = new StringBuilder(2);        sb.append(doc.getText(0, doc.getLength()));        //sb.append(doc.getText(0, 2));        sb.delete(offset, offset + length);        if (test(sb.toString())) { super.remove(fb, offset, length);        } else { // warn the user and don't allow the insert        }    }}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5083153.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-16
下一篇 2022-11-16

发表评论

登录后才能评论

评论列表(0条)

保存