У меня есть поле ввода ТЕКСТ. Я хочу ограничить ввод букв или цифр. Другие символы должны быть преобразованы в заниженную оценку. Следующий код делает это. Однако когда пользователь вставляет в поле, он обходит слушателя, и необработанный текст помещается в поле
private class TextKeyVerifyListener implements VerifyListener
{
@Override
public void verifyText( VerifyEvent event )
{
if (Character.isLetterOrDigit( event.character ))
event.text = "" + Character.toUpperCase( event.character );
else if (!Character.isISOControl( event.keyCode ))
event.text = "_";
}
}
Как мне перехватить действие вставки, чтобы, по крайней мере, я мог повторно проанализировать текстовое поле. Это кажется тяжелым делом делать это в обработчике изменений для каждого нажатия клавиши. Любое решение должно быть кроссплатформенным: -)
Это может сделать перехват для CTRL-V, но пользователь также может использовать всплывающее меню и выбрать вставку.