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, я получаю ожидаемую маску и нажатый символ.

Ответы на вопрос(1)

Ваш ответ на вопрос