Я использую JFace ComboViewer в своем плагине.Для удобства я бы хотел изменить текущий выбор, просто начав печатать.Для этого я добавил KeyListener в базовый Combo Element
. Я получаю событие, как только начинаю печатать, но, к сожалению, я не получаю измененное значение, а только то, которое было до того, как я начал печатать.
Мой кейлист, имеющий ссылку на ComboViewer, реагирует в настоящее время следующим образом:
@Override
public void keyPressed(KeyEvent e) {
ISelection selection = combo.getSelection(); //combo is the ComboViewer
if (selection instanceof IStructuredSelection && !selection.isEmpty()) {
IStructuredSelection strucSel = (IStructuredSelection) selection;
node = (TreeNode) strucSel.getFirstElement();
...}
Первый вводимый мной символ фактически делает это через оператор if, любой следующий типизированный символ вызываетвыделение должно быть пустым.
Итак, как мне всегда получить «текущий выбор» и как я могу получить измененное значение, похоже, что реагировать в кейлисте - это рано, потому что текстовое поле, которое я набираюin еще не обновлен и, таким образом, всегда будет предоставлять старую информацию?
Может быть, я что-то понял неправильно, но я не мог себе представить, что мне так трудно получить актуальную информацию из текстового поля.Любые советы?