"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puede un DocumentFilter restringir eficazmente la entrada de JTextField a números enteros?

¿Cómo puede un DocumentFilter restringir eficazmente la entrada de JTextField a números enteros?

Publicado el 2025-01-01
Navegar:743

How Can a DocumentFilter Effectively Restrict JTextField Input to Integers?

Filtrar la entrada de JTextField a números enteros: un enfoque eficaz con DocumentFilter

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.

DocumentFilter: una solución sólida

Un DocumentFilter monitorea los cambios en un documento, proporcionando un mayor control sobre la validación de las entradas. Le permite:

  • Interceptar la entrada antes de insertarla en el documento.
  • Realizar una lógica de validación personalizada y rechazar la entrada no válida.
  • Manejar varios escenarios de entrada, incluyendo cortar, copiar y pegar.

Implementación con DocumentFilter

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
}

Ventajas de DocumentFilter

  • Validación integral: garantiza que todas las entradas, independientemente del método de entrada, cumplan con los criterios de validación.
  • Versátil: admite varios tipos de datos, formatos de números y necesidades de validación futuras.
  • Más limpio Código: centraliza la lógica de validación, lo que reduce la complejidad del código.

Conclusión

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.

Último tutorial Más>

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