Относительно старый вопрос, но я решил, что я бы попробовал его, чтобы, возможно, помочь случайным поискам в Google.
Еще один подход, который можно использовать, чтобы минимизировать код и уменьшить количество дополнительных классов, этодобавить KeyListener
для события keyType и проверить значение Char .Это не очень переносимо (вы не можете использовать специфичное для региона форматирование, такое как числовая пунктуация), но это может быть очень полезно для целых чисел.Здесь также можно указать относительную длину:
textField.addKeyListener(new KeyAdapter()
{
@Override
public void keyTyped(KeyEvent keyEvent)
{
if (textField.getText().length() < 3 && keyEvent.getKeyChar() >= '0' && keyEvent.getKeyChar() <= '9')
{
// Optional
super.keyTyped(keyEvent);
}
else
{
// Discard the event
keyEvent.consume();
}
}
});
Вы также можете добавить еще один прослушиватель событий для проверки целого числа для дальнейшей обработки (например, полное число должно быть> 800 и <5220).Хорошим местом для этого было бы событие focusLost (?). </p>
Если вы часто используете эти функции, было бы лучше создать подкласс класса JTextField, чтобы обеспечить эту функциональность.
РЕДАКТИРОВАТЬ: Использование Character.isLetter(keyEvent.getKeyChar())
еще яснее.