You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaFX自定义DoubleTextField绑定DoubleProperty时单向绑定失效问题

问题根因

你自定义的DoubleTextField中设置了TextFormatter<Double>,该组件会接管TextField的文本内容转换、校验逻辑,双向绑定时JavaFX会自动适配TextFormatter的转换逻辑,所以可以正常运行;但直接单向绑定textProperty会和TextFormatter的内置同步逻辑冲突,导致绑定更新被拦截。另外你直接调用asString("%f")生成的字符串会默认携带6位小数,虽然符合你写的正则校验规则,但仍会和TextFormatter已有的DoubleStringConverter转换逻辑产生冲突。

解决方案

方案1:绑定TextFormatter的valueProperty(推荐)

直接绑定TextFormatter的valueProperty,利用其内置的转换器完成自动转换,不需要手动处理字符串格式:

// 替换你原来的单向绑定代码
dtfPrice.getTextFormatter().valueProperty().bind(model.getDpActualPrice());

这种方式会自动走你定义的正则校验逻辑,完全适配你自定义的DoubleTextField组件。

方案2:移除TextFormatter后直接绑定textProperty

如果你不需要输入校验,也可以去掉DoubleTextField构造方法中设置TextFormatter的逻辑,原来的单向绑定写法就能正常生效。

内容的提问来源于stack exchange,提问作者drakib

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 02:27:04