如果按下 CTRL 或 SHIFT 之类的修饰键,JavaFX 不会执行诸如ActionEvent
forButton
或之类的事件。CheckBox
据我了解,这种行为是在其中实现的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,则应在模型中设置一个称为“锁定”或“保护”的附加标志,这将防止状态可以被被应用程序的一些其他逻辑覆盖。
这应该对用例有所了解,但如果不是,这对我的实际问题并不重要:即使用户按下修饰符,我如何才能使 aCheckBox
仍然可以切换(或被按下)Button
钥匙?
谢谢你的帮助!