标题几乎说明了一切。我需要在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
}
});
但由于某种原因,即使事件被消耗,按下删除时结束字符仍会被删除。
谢谢你的时间!
答案 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块内将仅取消此按钮,其他按钮将照常工作。
这对我来说很好