Наверно надо посмотреть на коллекцию listener'ов и очистить её перед добавлением собственного.
Список слушателей клавиш по умолчанию пуст:
JTextField jtf = new JTextField();
System.out.println(jtf.getKeyListeners().length); // --> 0
Но всё-таки разобрался, в процессе поиска листенера. В конструкторе объекта JTextComponent, от которого наследуется JTextField есть строка:
enableEvents(AWTEvent.KEY_EVENT_MASK | AWTEvent.INPUT_METHOD_EVENT_MASK);
Если наследовать свой объект от JTextField и выполнить строку:
disableEvents(AWTEvent.KEY_EVENT_MASK | AWTEvent.INPUT_METHOD_EVENT_MASK);
То поле перестаёт реагировать на нажатия клавиш.
System.out.println(getMouseListeners().length); //--> 3
System.out.println(getMouseMotionListeners().length); //--> 2
Если удалить слушатели мыши и движений мыши, то ничто не помешает управлять выделением текста в поле.