禁用JavaFX TextField中的字符删除键

时间:2016-01-19 08:02:37

标签: java javafx textfield

标题几乎说明了一切。我需要在JavaFX TextField中禁用字符删除键。通过字符删除键,我的意思是DEL和SUPPR。

现在,这就是我所拥有的:

mytextfield.addEventFilter(KeyEvent.KEY_TYPED, new EventHandler<KeyEvent>() {
        public void handle(KeyEvent event) {          
            if (event.getCharacter().matches("[0-9]")) {
                // some stuff that works perfectly here
            }
            event.consume(); // to cancel everything but 0-9 keys
        }
    });

但由于某种原因,即使事件被消耗,按下删除时结束字符仍会被删除。

谢谢你的时间!

1 个答案:

答案 0 :(得分:0)

KEY_TYPED 仅在按下生成 UTF 输出的键之后才会触发事件。 KEY_TYPED 事件将不会在 BACK_SPACE DELETE 键按下时生成。请使用 KEY_PRESSED 事件。

mytextfield.addEventFilter(KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>() {
        public void handle(KeyEvent event) {          
            if (event.getCode() == KeyCode.BACK_SPACE || event.getCode() == KeyCode.DELETE) {
                event.consume(); // to cancel character-removing keys               
            }
        }
    });

event.consume() 放入if块内将仅取消此按钮,其他按钮将照常工作。

这对我来说很好