javafx - 如何在 JavaFx 中将 KeyEvent 设置为 KeyCode.BACK_SAPCE?
问题描述
如果输入的值不是数字 KeyEvent
KeyCode
,我正在尝试设置。KeyCode.BACK_SAPCE
但我无法实现
public void textFieldKeyReleased(KeyEvent e) {
if (!e.getCode().isDigitKey()) {
textField.setText(""); //manually set text
e.getCode() = KeyCode.BACK_SPACE; //required: variable found: value
}
}
如果字符不是数字,我想删除它。
我已分配
KeyCode.BACK_SAPCE
但KeyEvent e
不工作。
热使用KeyCode
(S)?
我手动设置textField.setText("");
但想使用KeyCode
解决方案
所以你想防止任何非数字字符被添加到TextField
?实际上有一个更好的方法来做到这一点:使用 aTextFormatter
来防止任何导致不需要的文本的更改。这与复制和粘贴等效果更好。您甚至可以实现修复更改的逻辑,例如在复制和粘贴的情况下删除任何非数字字符。
@Override
public void start(Stage primaryStage) throws Exception {
TextField digitsOnly = new TextField();
TextFormatter formatter = new TextFormatter((UnaryOperator<TextFormatter.Change>) change -> {
if (change.getControlNewText().matches("\\d*")) {
return change; // allow change without modifying it
} else {
return null; // don't allow change
}
});
digitsOnly.setTextFormatter(formatter);
Scene scene = new Scene(new VBox(digitsOnly));
primaryStage.setScene(scene);
primaryStage.show();
}
推荐阅读
- linux - 如何使用 shell 脚本解析 xml 并获取值
- php - 在我的 PHP 代码中从上传的 PDF 元数据文件中获取页面大小
- php - 当有很多错误时,Laravel 不会显示错误。它,是虫子吗?
- unity3d - 如何动态更新 Unity 预制件?
- bootstrap-4 - 引导导航栏高度
- c# - 如何在异常处理中获取准确的堆栈跟踪行号
- reactjs - 在 Formik 表单中无法识别 handleSubmit 和值
- javascript - 无法对包含数字的 javascript 字符串数组进行排序
- powerbi - 使用 IDBC 将一组数据(从数据库)加载到 Power BI 后,加载的数据保存在我的计算机/服务器上的哪个位置?
- sas - 在 sysget 调用的输出中屏蔽与号