繁体   English   中英

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

[英]JavaFX 8 - How to get Backspace key pressed on HTMLEditor?

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

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

editor是一个HTMLEditor控件。 它适用于每个KeyEvent (与此同时也可以捕获CTRL等),但不适用于Backspace和Delete键事件。 我在这里做错了什么?

线

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

是的简写,因此等同于

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

在这些事件到达上述定义的密钥处理程序之前, HTMLEditor似乎正在使用BackspaceDelete键事件。

无需添加事件处理程序,而是将键过滤器添加到编辑器

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

因为事件过滤器是在接收到事件后立即调用的,所以在任何事件处理程序之前都将被调用。 当事件处于冒泡阶段时,即事件返回父节点时,将调用事件处理程序。

我不确定这是否是错误,您发布的代码无法按预期工作,但以下内容可以工作。

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

也许其他人可以更好地回答它,或者您可以向JavaFX团队提出问题

尝试这个 :

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...");
            }
        }
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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