gpt4 book ai didi

JavaFX DoubleProperty intValue() 方法始终返回 0,其中返回 0....100

转载 作者:行者123 更新时间:2023-12-02 02:51:05 26 4
gpt4 key购买 nike

Description

我有一个Label,其文本绑定(bind)到ProgressBar ProgressProperty。然后我将进度条的值乘以 100 ,并且我希望进度条将进度条的值 * 100 显示为整数加 % ,例如 "50 %"“25%”等:

label.textProperty().bind(Bindings.concat(progressBar.progressProperty().multiply(100.00).intValue()," %");

The problem

由于某种原因,.intValue() 方法始终返回 0。如果我删除它,则返回进度条的值,该值是 double ,例如 25,05345 %32,3456534 %...

Finally

为什么intValue()会这样工作?

最佳答案

你已经回答了你的问题,但无论如何......

首先,您的示例代码缺少一个 ),我将假设它确实存在(否则它将无法编译),并且位于末尾。

其次,Bindings.concat() 接受任何对象,而不仅仅是可观察对象。因此 Bindings.concat(new Object(), new Object()); 可以很好地编译,但没有用。在您的情况下,您将此方法作为 Bindings.concat(int, String) 调用,并将 int 自动装箱为 Integer

来自JavaDoc :

If one of the arguments implements ObservableValue and the value of this ObservableValue changes, the change is automatically reflected in the StringExpression.

由于您没有为该方法提供任何可观察值,因此您将在该方法运行时获取绑定(bind)表达式的值,该值恰好为 0

你可以这样做:

label.textProperty().bind(Bindings.format("%1$.0f %%", progressBar.progressProperty().multiply(100.00)));

或者使用您通过 Bindings.createStringBinding() 已经想出的内容。

关于JavaFX DoubleProperty intValue() 方法始终返回 0,其中返回 0....100,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43839401/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com