Aunque es intuitivo, usar un detector de claves para validar la entrada numérica en un JTextField es inadecuado. En su lugar, un enfoque más completo es emplear un DocumentFilter.
Un DocumentFilter monitorea los cambios en un documento, proporcionando un mayor control sobre la validación de las entradas. Le permite:
Un ejemplo de implementación de MyIntFilter usando 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 }
Al utilizar un DocumentFilter, puede restringir eficazmente la entrada de JTextField a números enteros, asegurando que solo se ingresen datos válidos . Es un enfoque sólido y confiable que aborda las limitaciones de los oyentes clave.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3