«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как DocumentFilter может эффективно ограничить ввод JTextField целыми числами?

Как DocumentFilter может эффективно ограничить ввод JTextField целыми числами?

Опубликовано 1 января 2025 г.
Просматривать:143

How Can a DocumentFilter Effectively Restrict JTextField Input to Integers?

Фильтрация входных данных JTextField в целые числа: эффективный подход с DocumentFilter

Хотя использование прослушивателя ключей для проверки числового ввода в JTextField интуитивно понятно, его недостаточно. Вместо этого более комплексный подход заключается в использовании DocumentFilter.

DocumentFilter: надежное решение

DocumentFilter отслеживает изменения в документе, обеспечивая больший контроль над проверкой ввода. Он позволяет:

  • Перехватывать вводимые данные перед их вставкой в ​​документ.
  • Выполнять пользовательскую логику проверки и отклонять недопустимые вводимые данные.
  • Обрабатывать различные сценарии ввода, включая вырезание, копирование и вставку.

Реализация с помощью DocumentFilter

Пример реализации MyIntFilter с использованием 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