javaFX 在标签或微调器中存储数字格式

javaFX Storing number format in label or spinner

我有一个表格视图,在他的一列中我计算了小计: 列"subTotal" = "Qty * price",计算小计后,我计算所有小计的总和。 也许使用: - 一个标签,那么我如何根据需要从标签中存储和检索总和。 - Spinner,那么如何将总和绑定到 Spinner 的 valueProperty。

这是第一个使用标签的选项:

 DoubleBinding doubleBinding = Bindings.createDoubleBinding(() -> tableView.getItems().stream().
                collect(Collectors.summingDouble(LineCommand::getSubTotal)), tableView.getItems());
        lblTotalHt.textProperty().bind(Bindings.format("%3.2f", doubleBinding));

如何检索存储的金额的问题?

第二个选项: 如何使用微调器执行此操作

fldTotalHt.valueProperty().....Bind(toTheSum);

如果 fldTotalHt 是一个 Spinner,那么您可以像这样访问它的值 属性

fldTotalHt.getValueFactory().valueProperty().bind(sumProperty)

关于标签。我不太明白,你到底是什么。据我了解,您只是无法获取标签的内容。但这只是 label.getText(),如果您了解属性和绑定,但对此一无所知,那就很奇怪了。

对于你的第一个问题:"How can I retrieve the stored sum?",你可以从与

的绑定中得到这个
double sum = doubleBinding.getValue();

第二个问题,你可以

Spinner<Double> spinner = new Spinner(min, max, doubleBinding.getValue());
spinner.getValueFactory().valueProperty().bind(doubleBinding.asObject());

(asObject() 有效地将 ObservableValue<Number> 转换为 ObservableValue<Double>).

但是请注意,绑定微调器的值是毫无意义的。由于显而易见的原因,无法设置绑定值,因此不允许用户更改微调器的值——这意味着它除了标签之外没有更多的功能。真的不清楚 为什么 你会想要在微调器中显示这个值,因为它真的没有任何意义让用户能够更改从其他计算的值值。为什么不直接使用标签?