Я думаю, что проблема в ваших условиях. Подумайте об этом так: если пользователь нажимает клавишу Tab, то это не будет буква или цифра, поэтому он отменяет клавишу. Вы хотите отменить, только если это не любой из тех ключей, которые вам нужны, а не если это не все из ключей (сразу). Если вы измените значение на &&
, оно должно работать.
if (!Character.isLetterOrDigit(keyCode)
&& !(keyCode == KeyCodes.KEY_TAB)
&& !(keyCode == KeyCodes.KEY_BACKSPACE)
&& !(keyCode == KeyCodes.KEY_LEFT)
&& !(keyCode == KeyCodes.KEY_RIGHT)
)
sender.cancelKey();
Если это не буква или цифра, и если это не вкладка, и если это не пробел, а не слева и не вправо, то отмените.