![](/img/trans.png)
[英]android.intent.action.MEDIA_BUTTON event fires twice if i press Headset button once
[英]Event filter on DatePicker fires twice for one action
我有这个代码可以使用键盘在日期选择器中修改日期:
DatePicker startDatePicker = new DatePicker();
startDatePicker.addEventFilter(KeyEvent.KEY_PRESSED, (event) -> {
if (event.getCode().equals(KeyCode.UP)){
startDatePicker.setValue(startDatePicker.valueProperty().get().plusDays(1));
event.consume();
}else if (event.getCode().equals(KeyCode.DOWN)){
startDatePicker.setValue(startDatePicker.valueProperty().get().minusDays(1));
event.consume();
}
});
但是,无论我做什么,每次按键都会触发两次事件。 我尝试使用 KEY_PRESSED 和 KEY_RELEASED,消耗或不消耗事件,但无论我做什么它总是触发两次(使用输出到控制台进行测试,每个按键产生两行)。 现在我正在使用布尔变量解决它,因此该事件只能每隔一次工作,但必须有比这更好的解决方案。
我不完全确定为什么会这样; 看起来日期选择器的弹出窗口接收事件,并将其重定向到日期选择器,然后日期选择器本身独立接收事件。 那大概是个bug。 将侦听器添加到文本字段是否足以解决问题:
startDatePicker.getEditor().addEventFilter(KeyEvent.KEY_PRESSED, ...);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.