虽然直观,但使用键侦听器来验证 JTextField 中的数字输入是不够的。相反,更全面的方法是使用 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,可以有效地将JTextField输入限制为整数,确保只输入有效数据。这是一种强大而可靠的方法,可以解决关键听众的局限性。
以上是DocumentFilter 如何有效地将 JTextField 输入限制为整数?的详细内容。更多信息请关注PHP中文网其他相关文章!