stackoverflow.com/questions/5842190/...
исал SWT UI, у которого есть основная функция отображения текста в элементе управления StyledText. Я хочу добавить обработчик дляCtrl+F так что при нажатии этого ярлыка фокус устанавливается на поле поиска. Я попытался использовать следующий код для обнаружения нажатия клавиш.
sWindow = new Shell();
...
sWindow.getDisplay().addFilter(SWT.KeyDown, new Listener()
{
@Override
public void handleEvent(Event e)
{
System.out.println("Filter-ctrl: " + SWT.CTRL);
System.out.println("Filter-mask: " + e.stateMask);
System.out.println("Filter-char: " + e.character);
}
});
Я ожидал, что когда я нажалCtrl+f Я бы увидел следующий вывод:
Filter-ctrl: 262144
Filter-mask: 262144
Filter-char: f
Однако на практике я действительно вижу следующее.
Filter-ctrl: 262144
Filter-mask: 262144
Filter-char: <unprintable char - displayed as a box in eclipse console>
У меня есть два вопроса:
Является ли Display.addFilter (...) лучшим способом добавления глобального ярлыка? Я попытался Display.addListener (...), но это не получало никаких событий вообще.Почему я не получаю нажатый символ, когда я держуCtrl? Когда я удерживаю Alt или Shift, я получаю ожидаемую маску и нажатый символ.