javafx - JavaFx - StringConverter.fromString 何时在 DatePicker 中执行
问题描述
我正在尝试自定义 DatePicker,并希望在用户输入无效时为 DatePicker 的 TextField/Editor 添加一个红色边框,并在它变为有效时再次将其删除。我遇到的唯一问题是触发验证,我似乎无法在转换器中执行 fromString 方法(然后更新属性等等......,这一切都很好)。
我的印象是 fromString 方法会在用户输入时执行,但显然它不会,所以我的问题基本上归结为“fromString 方法何时执行”。
解决方案
何时DatePicker
使用转换器无关紧要,但何时要检查转换。您可以简单地text
使用editor
.
以下代码中的绑定注册了这样一个监听器:
@Override
public void start(Stage primaryStage) throws Exception {
DatePicker datePicker = new DatePicker();
TextField editor = datePicker.getEditor();
StringConverter<LocalDate> converter = datePicker.getConverter();
editor.styleProperty().bind(Bindings.createStringBinding(() -> {
try {
converter.fromString(editor.getText());
} catch (Exception e) {
return "-fx-background-color: red;";
}
return null;
}, editor.textProperty()));
Scene scene = new Scene(new VBox(datePicker), 200, 100);
primaryStage.setScene(scene);
primaryStage.show();
}
编辑:当输入文本时使用转换器,Enter在聚焦editor
.
推荐阅读
- jupyter-notebook - 无法从导航器安装 Jupyter
- vue.js - 在 Vue2-editor 中添加字体样式和字体大小
- javascript - 我正在使用 socket.io 和 node.js 开发 Youtube Synchronizer 示例,但如果用户加载页面,其他用户会影响
- php - 根据一周中的几天安排 WooCommerce 销售价格
- xpath - 路径 | 替换为“任何”
- javascript - 输入 type="number" 只允许输入数字
- java - 不能不序列化HashMap
- python - 在 VS Code 上设置 Azure python 函数应用的问题
- sql - 从 JSON 格式的查询条件生成 SQL 查询
- dependency-injection - 如何在注入服务的构造器中设置参数?