我正在尝试借助 Bindings
将 Label
的 textProperty
绑定(bind)到对象的 SimpleIntegerProperty
但是当我实时更改对象的 SimpleIntegerProperty
时,它不会更改文本。对于如何更改 textProperty
的任何帮助,我们将不胜感激。
package sample;
import javafx.beans.binding.Bindings;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;
import javafx.scene.control.Slider;
import java.net.URL;
import java.util.ResourceBundle;
public class Controller implements Initializable
{
@FXML
private Slider slider;
@FXML
private Label label;
@Override
public void initialize(URL location, ResourceBundle resources) {
MyObject object = new MyObject(0);
label.textProperty().bind(Bindings.createStringBinding(() -> " hello " + object.numberProperty().get() * (10 + 12)/2));
object.numberProperty().bind(slider.valueProperty());
}
}
class MyObject {
private SimpleIntegerProperty number;
public Object(int number){
this.number = new SimpleIntegerProperty(number);
}
public SimpleIntegerProperty numberProperty(){return this.number;}
}
最佳答案
您需要“告诉”Bindings
,哪些Observable
要观察变化。此可变参数是 createStringBinding
方法的第二个参数。在这种情况下,您只需传递一个 Observable
:object.numberProperty()
label.textProperty().bind(
Bindings.createStringBinding(
() -> " hello " + object.numberProperty().get() * (10 + 12)/2,
object.numberProperty()));
关于javafx Bindings.createStringBinding 但绑定(bind)实际上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38543273/