для моего приложения мне нужна клавиша пробела для вызова функции, независимой от сфокусированного виджета, везде в приложении, но только если открыта соответствующая вкладка. Я обнаружил, что можно добавить фильтр на дисплей, например:
getShell().getDisplay().addFilter(SWT.KeyDown, new Listener() {
public void handleEvent(Event arg0) {
if( arg0.character == 32 ) { /**SPACE*/
if( mainTabs.getSelection().equals(analyseSoundFilesTab)) {
soundController.playButtonClickHandler();
}
}
}
});
Это прекрасно работает в большинстве случаев, но если я выделю кнопке фокус с помощью «вкладки» или «сдвига вкладки», это довольно странно - пробел активирует «нажатие кнопки», как если бы вы щелкнули кнопка с мышью. Я немного застрял сейчас, я не знаю, как этого избежать ...
Для кнопок я реализовал SelectionListener.
С уважением.