У меня есть редактируемый JComboBox, в котором я хочу предпринять некоторые действия при изменении текста, набрав или выделив. В этом случае текст является шаблоном, и я хочу убедиться, что шаблон действителен, и показать совпадения, которые приводят к некоторым тестовым данным.
Сделав очевидное, прикрепив ActionHandler, я обнаружил, что при наборе текста событие, по-видимому, срабатывает ненадежно, в лучшем случае (выбор в порядке). И когда он запускает в результате набора текста, извлеченный текст (используя getEditor (). GetItem (), поскольку getSelectedItem () получает текст, только когда он был выбран из списка), кажется, текст, как это было, когда было запущено последнее событие, то есть всегда отсутствует символ, который был набран непосредственно перед срабатыванием события действия.
Я ожидал, что событие действия сработает после некоторой короткой задержки (от 500 мс до 1 секунды), но, похоже, оно сразу срабатывает при нажатии (если оно вообще срабатывает).
Единственная работоспособная альтернатива, о которой я могу подумать, - это просто запустить 1-секундный таймер при достижении фокуса, убить его при потере фокуса и выполнить работу как действие таймера, если содержимое отличается от последнего времени.
Есть мысли или предложения?
Фрагменты кода не особенно интересны:
find.addActionListener(this);
...
public void actionPerformed(ActionEvent evt) {
System.out.println("Find: "+find.getEditor().getItem());
}