繁体   English   中英

DatePicker 上的事件过滤器为一项操作触发两次

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM