在这里,我正在使用ControlsFX的评级功能。每次更改额定值时,我都需要更新TextField中的值,如屏幕截图所示。是否可以在此处使用javafx.concurrent.Task?我该如何申请呢?
这是我的代码:
@FXML
private HBox ratinghbox;
@FXML
private TextField yourratingtxt;
private Rating rating;
@Override
public void initialize(URL url, ResourceBundle rb) {
rating = new Rating();
rating.setPartialRating(true);
ratinghbox.getChildren().add(rating);
yourratingtxt.setText(String.valueOf(rating.getRating()));
}
使用变更监听器
使用ratingProperty更新文本字段
rating.ratingProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable,
Number oldValue, Number newValue) {
textField.setText(newValue.toString());
}
});
使用绑定
您还可以bidirectional binding
在文本字段和等级之间创建一个(仅当您最好不要编辑文本字段的值时)
textfield.setDisable(true)
Bindings.bindBidirectional(textField.textProperty(), rating.ratingProperty(),
new NumberStringConverter());
如果您必须编辑文本字段,请不要使用它
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句