javafx - 如何在 JavaFX 微调器中设置小数位?
问题描述
我想让 JavaFX 微调器有 3 个小数位作为双精度值,所以我做了Spinner
这样的:
Spinner<Double> spinner = new Spinner<Double>();
SpinnerValueFactory<Double> valueFactory =
new SpinnerValueFactory.DoubleSpinnerValueFactory(0, 512, 51.197, 1);
spinner.setValueFactory(valueFactory);
spinner.setEditable(true);
我刚刚制作了初始值为 51.197 的微调器,但是当我运行此代码时,初始值为 51.2;当我将微调器编辑为 52.666 时,我无法使用此值。我认为小数点有问题。我想将值形式用作###.###
. 如何处理 JavaFXSpinner
小数位?
解决方案
我解决了这个问题StringConverter
。
StringConverter<Double> doubleConverter = new StringConverter<Double>() {
private final DecimalFormat df = new DecimalFormat("###.###");
@Override
public String toString(Double object) {
if (object == null) {return "";}
return df.format(object);}
@Override
public Double fromString(String string) {
try {
if (string == null) {return null;}
string = string.trim();
if (string.length() < 1) {return null;}
return df.parse(string).doubleValue();
} catch (ParseException ex) {throw new RuntimeException(ex);}
}
};
Spinner<Double> spinner = new Spinner<Double>();
SpinnerValueFactory<Double> valueFactory = new SpinnerValueFactory.DoubleSpinnerValueFactory(0, 512, 51.197, 1);
spinner.setValueFactory(valueFactory);
spinner.setEditable(true);
SpinnerValueFactory.setConverter(doubleConverter);
推荐阅读
- java - 如何编辑图像元数据?
- spring-boot - 如何使 docker 服务在本地网络上可用
- replication - 从 AWS 中托管的只读副本读取
- c++ - 在 Sublime Text 3 MacOS 中运行 C++ 程序
- python-2.7 - Python 类型似乎发生了变化
- c# - 如何在 C# 的 MongoDB 查询中使用“聚合”和“项目”?
- php - Lumen:在哪里定义控制器响应辅助方法
- php - IIS 服务器中的 php_oci8 问题
- selenium-webdriver - 如何为与类和 aria-label 绑定在 td 内的日历元素编写 xpath
- java - 升级 junrar 时的警告:不推荐使用符号 extractArchive