将评级值设置为文本框

时间:2014-09-24 06:05:37

标签: java javafx rating controlsfx

我在这里使用rating feature of ControlsFX。每次更改评级值时,我都需要更新TextField中的值,如屏幕截图所示。是否可以在这里使用 javafx.concurrent.Task ?我该如何申请? enter image description here

这是我的代码:

@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()));
}

2 个答案:

答案 0 :(得分:2)

使用更改侦听器

使用ratingProperty更新Textfield

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());

如果您需要修改文字字段,请不要使用此

答案 1 :(得分:1)

使用Rating对象注册Click事件处理程序。

public final <T extends Event> void addEventHandler(EventType<T> eventType,
                                                EventHandler<? super T> eventHandler)

编写一个事件处理程序,当您单击评级控件时将调用该处理程序。 然后更改事件处理程序中的值。