Вы не должны использовать KeyListener для этого типа взаимодействия.Вместо этого используйте привязки клавиш, о которых вы можете прочитать в Java Tutorial .Затем вы можете использовать маску InputEvent для представления, когда различные клавиши-модификаторы отменяются.Например:
// Component that you want listening to your key
JComponent component = ...;
component.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_SPACE,
java.awt.event.InputEvent.CTRL_DOWN_MASK),
"actionMapKey");
component.getActionMap().put("actionMapKey",
someAction);
См. Javadoc для KeyStroke для различных кодов, которые вы можете использовать при получении KeyStroke.Эти модификаторы могут объединяться или объединяться для представления различных комбинаций клавиш.Например,
KeyStroke.getKeyStroke(KeyEvent.VK_SPACE,
java.awt.event.InputEvent.CTRL_DOWN_MASK
| java.awt.event.InputEvent.SHIFT_DOWN_MASK)
Для представления, когда были нажаты клавиши Ctrl + Shift
.
Редактировать: Как уже отмечалось, это не отвечает на ваш вопрос, но вместоэто просто хороший совет.