Хотя использование прослушивателя ключей для проверки числового ввода в JTextField интуитивно понятно, его недостаточно. Вместо этого более комплексный подход заключается в использовании 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