Обход с помощью кнопок со стрелками ВВЕРХ и ВНИЗ - FocusOut кнопки Handling - PullRequest
0 голосов
/ 09 февраля 2012

, что я пытаюсь заархивировать здесь, это пройти внутри элементов управления с помощью клавиш со стрелками ВВЕРХ и ВНИЗ, код выглядит примерно так в экранном объекте.Может показаться странным, но это требование: - /

displayObj.addFilter(SWT.KeyDown,new Listener() {
    public void handleEvent(Event event) {
        Control ctrl= (Control) event.widget;
        if(event.keyCode==SWT.ARROW_UP) {                   
            ctrl.traverse(SWT.TRAVERSE_TAB_PREVIOUS);
        } else if(event.keyCode==SWT.ARROW_DOWN) {
            ctrl.traverse(SWT.TRAVERSE_TAB_NEXT);
        }
    }
});

это прекрасно работает для текстов и полей со списком.Но третье поле - это кнопка (compositeObj,SWT.CHECK), в этот момент это не работает, потому что генерируется событие SWT.FocusOut, и фокус перемещается к следующей кнопке «ОК» «Отмена» вместо выпадающего списка сразу после него.,Обход вкладок происходит правильно в правильном порядке, как в тексте, тексте, кнопке, комбо, кнопке и кнопке.Невозможно использовать FocusListener, потому что нет способа отдельно обрабатывать события стрелок ВВЕРХ и ВНИЗ.

Есть ли другие способы сделать это ?.Заранее спасибо за любые ответы.

1 Ответ

0 голосов
/ 20 февраля 2012

Использование TraverseListener, как показано ниже на кнопках, решило проблему.

cancelButton.addTraverseListener(new TraverseListener () {
public void keyTraversed(TraverseEvent e) {
e.doit=false;
if (e.keyCode==16777218) {
userIdText.forceFocus();
} else if (e.keyCode==16777217) {
connectButton.forceFocus();
}
else {
//do nothing,i guess;
}
}
});

В любом случае, спасибо.

...