JavaFX не выполняет такие события, как ActionEvent
для Button
или CheckBox
, если нажата клавиша-модификатор, такая как CTRL или SHIFT. Насколько я понимаю, это поведение реализовано в ButtonBehavior
(например, обратите внимание на выражение ! keyDown
в следующем методе из этого класса):
@Override public void mouseReleased(MouseEvent e) {
// if armed by a mouse press instead of key press, then fire!
final ButtonBase button = getControl();
if (! keyDown && button.isArmed()) {
button.fire();
button.disarm();
}
}
Прежде всего, я не очень понимаю причину этого. Какова цель не нажимать кнопку, если нажата клавиша?
Это мой вариант использования: я хочу установить флажок, который можно установить / снять как обычно. Это переключит некоторое состояние в модели. Но у него должна быть дополнительная функция: если пользователь нажимает какую-либо клавишу, например CTRL, во время проверки / снятия галочки с помощью мыши, в модели должен быть установлен дополнительный флаг, называемый «заблокирован» или «защищен», что предотвратит возможность изменения состояния. перезаписывается другой логикой приложения.
Это должно дать представление о сценарии использования, но если нет, то для моего реального вопроса это не имеет значения: как я могу сделать возможным, чтобы CheckBox
все еще можно было переключать (или Button
можно нажата) хотя пользователь нажимает клавишу-модификатор?
Спасибо за вашу помощь!