Я хочу знать, когда клавиша Ctrl отпускается в eclipse RAP, я добился этого в RCP. Но узнал, что он ведет себя по-разному на RAP. Любые предложения о том, как этого добиться.
Как зафиксировать нажатие клавиши Ctrl в eclipse RAP
Ответы (1)
IIRC RAP не отправляет ключевые события, если нажата или отпущена только клавиша-модификатор (например, Shift, Ctrl и т. д.). Только для обычных клавиш отправляются события, и event.stateMask
можно запросить, какие клавиши-модификаторы нажаты в данный момент.
Нажатие Ctrl+A отправит keyPressed
и keyReleased
, где character
– A, а stateMask
– Ctrl.
Нажатие только Ctrl не отправит событие.
Если вы сомневаетесь, простой Shell
с прикрепленным KeyListener
, который печатает события в System.out
, поможет вам прояснить ситуацию.
person
Rüdiger Herrmann
schedule
21.05.2016
Но проблема в том, что ключевые слушатели не вызываются в нужное время. Какой слушатель я должен использовать для этого?
- person Juseeth; 21.05.2016
В RAP нет возможности получать уведомления, когда была нажата только клавиша ‹kbd›Ctrl‹/kbd›.
- person Rüdiger Herrmann; 21.05.2016
Я имею в виду, что я могу получить, какая клавиша была нажата из stateMask, как вы упомянули, но будут ли прослушиватели клавиш получать уведомления при нажатии клавиши?
- person Juseeth; 21.05.2016
Как я уже сказал, прослушиватель клавиш будет уведомлен только в том случае, если была нажата обычная клавиша с клавишей-модификатором или без нее. Если была нажата только измененная клавиша, такая как Ctrl, событие не будет отправлено.
- person Rüdiger Herrmann; 21.05.2016
Моя цель - выбрать несколько элементов с помощью щелчка Ctrl. Так вот, я никогда не использую отдельные клавиши с Ctrl.
- person Juseeth; 21.05.2016
Какой виджет (Список?, Таблица?, ...?) вы используете для выбора нескольких элементов?
- person Rüdiger Herrmann; 22.05.2016
Я использую ListViewer для выбора Ctrl, после отпускания клавиши Ctrl должен быть вызван мой метод.
- person Juseeth; 22.05.2016
Если виджет
List
был создан с помощью SWT.MULTI
, он должен позволять Ctrl+выбирать элементы. Событие выбора уведомит, если элементы выбраны или не выбраны. Почему вы пытаетесь получить состояние модификатора?
- person Rüdiger Herrmann; 23.05.2016
Я хочу сделать это сразу после выбора элементов (т.е. после отпускания клавиши Ctrl). Вот почему я хочу это сделать.
- person Juseeth; 23.05.2016
Используйте
SelectionListener
. Его событие widgetSelected
отправляется при каждом изменении выбора.
- person Rüdiger Herrmann; 23.05.2016