2014-09-24 115 views
0

這裏我使用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())); 
} 

回答

1

使用變化監聽

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

如果你需要編輯文本字段,請不要使用該

1

登記評級對象的Click事件處理程序。

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

編寫一個事件處理函數,當您點擊評級控制時會調用它。 ,然後更改事件處理程序中的值。

相關問題