Добавьте второй actionlistener, который вызывается всякий раз, когда пользователь нажимает любую клавишу, и когда он вызывается, сохраните текущее время в глобальной переменной. Затем, когда вызывается ваше событие TextChanged, оно проверяет разницу во времени между глобальной переменной и текущим временем.
Если разница составляет менее 300 миллисекунд, запустите таймер для выполнения запроса через 300 миллисекунд. Затем, если пользователь нажимает другую клавишу, он сначала сбрасывает таймер.