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

时间:2016-02-04 12:38:51

标签: java javafx binding spinner

我有一个tableview,在他的一个列中我计算了subTotal: 专栏" subTotal" ="数量*价格",在计算小计后,我计算所有小计的总和。 也许使用: - 标签,那么我如何根据需要存储和检索标签的总和。 - 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);

2 个答案:

答案 0 :(得分:1)

如果fldTotalHtSpinner,那么您可以像这样访问其value属性

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

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

答案 1 :(得分:1)

对于您的第一个问题:“我如何检索存储的金额?”,您可以通过绑定获取此信息

double sum = doubleBinding.getValue();

对于第二个问题,你可以做到

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

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

但请注意,绑定一个微调器的值是没有意义的。由于显而易见的原因,无法设置绑定值,因此不允许用户更改微调器的值 - 这意味着它不会具有比标签更多的功能。实际上并不清楚为什么你想要在微调器中显示这个值,因为用户能够更改从其他值计算的值确实没有任何意义。为什么不使用标签?