首页 > Java > java教程 > DocumentFilter 如何有效地将 JTextField 输入限制为整数?

DocumentFilter 如何有效地将 JTextField 输入限制为整数?

Susan Sarandon
发布: 2024-12-08 10:39:12
原创
751 人浏览过

How Can a DocumentFilter Effectively Restrict JTextField Input to Integers?

将 JTextField 输入过滤为整数:使用 DocumentFilter 的有效方法

虽然直观,但使用键侦听器来验证 JTextField 中的数字输入是不够的。相反,更全面的方法是使用 DocumentFilter。

DocumentFilter:强大的解决方案

DocumentFilter 监视文档的更改,从而更好地控制输入验证。它允许您:

  • 在将输入插入文档之前拦截输入。
  • 执行自定义验证逻辑并拒绝无效输入。
  • 处理各种输入场景,包括剪切、复制和粘贴。

实现DocumentFilter

使用 DocumentFilter 实现 MyIntFilter 的示例:

class MyIntFilter extends DocumentFilter {
    @Override
    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 (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;
        }
    }

    ... // Other overridden methods for replace and remove
}
登录后复制

DocumentFilter

  • 全面验证:确保所有输入,无论输入方法,满足验证
  • 多功能:支持各种数据类型、数字格式以及未来的验证需求。
  • 更清晰的代码:集中验证逻辑,减少代码复杂性。

结论

通过利用DocumentFilter,可以有效地将JTextField输入限制为整数,确保只输入有效数据。这是一种强大而可靠的方法,可以解决关键听众的局限性。

以上是DocumentFilter 如何有效地将 JTextField 输入限制为整数?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板