JavaFX 8 - 如何在HTMLEditor上按下退格键?

时间:2015-04-09 08:01:39

标签: java javafx-8 keyevent

当按下键盘上的任何键时,我想将对话框标记为脏。因此我有这个代码:

editor.setOnKeyPressed(event -> dirtyProperty.set(true));

editorHTMLEditor控件。它适用于每个KeyEvent(CTRL等也可以使用此功能),但不适用于Backspace和Delete键事件。我在这里做错了什么?

3 个答案:

答案 0 :(得分:4)

该行

editor.setOnKeyPressed(event -> dirtyProperty.set(true));

是简写,因此等同于

editor.addEventHandler(KeyEvent.KEY_PRESSED, event -> dirtyProperty.set(true));
在这些事件到达如上定义的密钥处理程序之前,

HTMLEditor似乎正在消耗 Backspace 删除键事件。

不是添加事件处理程序,而是向编辑器添加键过滤器

editor.addEventFilter(KeyEvent.KEY_PRESSED, event -> dirtyProperty.set(true));

由于在收到事件时,在任何事件处理程序之前调用事件过滤器。而当事件处于冒泡阶段时,即事件返回父节点时,将调用事件处理程序。

答案 1 :(得分:1)

我不确定这是否是一个错误,您发布的代码不能按预期工作,但以下工作正常。

editor.addEventFilter(KeyEvent.KEY_PRESSED, (KeyEvent event) -> {
      System.out.println(event.getCode());
});

可能是其他人可以更好地回答它,或者您可以提交issue with the JavaFX team

答案 2 :(得分:0)

试试这个:

final HTMLEditor editor = new HTMLEditor();
    editor.setOnKeyReleased(new EventHandler<KeyEvent>() {
        public void handle(KeyEvent t) {
            if (t.getCode() == KeyCode.BACK_SPACE) {
                System.out.println("backspace pressed...");
            }
        }
    });