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