직관적이지만 키 리스너를 사용하여 JTextField의 숫자 입력을 검증하는 것은 부적절합니다. 대신, 보다 포괄적인 접근 방식은 DocumentFilter를 사용하는 것입니다.
DocumentFilter는 문서의 변경 사항을 모니터링하여 입력 유효성 검사를 더욱 효과적으로 제어할 수 있습니다. 이를 통해 다음 작업을 수행할 수 있습니다.
다음의 구현 예 DocumentFilter:
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는 정수로 입력되어 유효한 데이터만 입력되도록 합니다. 이는 핵심 청취자의 한계를 해결하는 강력하고 안정적인 접근 방식입니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3