-1

我想过滤一些字符,即文本字段中的字母“a”。我明确不想为此任务使用推荐的TextFormatter / setTextFormatter() 。

下面的代码示例实际上应该在事件调度链上的事件到达 TextField 节点之前消耗它,它是parentNode的子节点,但它没有。当然,如果我在文本字段节点本身上设置过滤器,也会发生同样的情况。

为什么?

    parentNode.addEventFilter(KeyEvent.KEY_PRESSED, event -> {
        if (event.getCode() == KeyCode.A) {
            event.consume();
        }
    });
4

1 回答 1

-1

啊,真的很奇怪,好像KeyEvent.KEY_PRESSED不足以处理所有调度的事件。如果我使用更通用的KeyEvent.ANY而不是以下代码:

    TextField tf = new TextField();
    tf.addEventFilter(KeyEvent.ANY, event -> {
        if (event.getCharacter().matches("[aA]"))
            event.consume();
    });
于 2021-05-08T11:23:22.407 回答