2016-05-03 18 views
1

Erstellt ein TableView mit ProgressBar mit FXML. Ich erhalte einen Fehler wie unten für die Zeile, die ProgressBarTableCell im folgenden Code enthält. Ich bezog mich auf Link1 & Link2, aber ich bin nicht in der Lage herauszufinden, welchen Fehler ich mache.JavaFX - TableView ProgressBar (Error - setCellValueFactory kann nicht angewendet werden)

Fehler:

'setCellValueFactory(javafx.util.Callback<javafx.scene.control.TableColumn.CellDataFeatures<model.TableDisplayData,java.lang.Double>,javafx.beans.value.ObservableValue<java.lang.Double>>)' 

in 'javafx.scene.control.TableColumn' cannot be applied to 

'(javafx.util.Callback<javafx.scene.control.TableColumn<model.TableDisplayData,java.lang.Double>,javafx.scene.control.TableCell<model.TableDisplayData,java.lang.Double>>)' 

Code:

@FXML 
private TableView<TableDisplayData> tvDisplay; 
@FXML 
private TableColumn<TableDisplayData,String> colCarModel; 
@FXML 
private TableColumn<TableDisplayData,String> colModelIndicator; 
@FXML 
private TableColumn<TableDisplayData,Double> colSpeedProgress; 

@Override 
public void initialize(URL location, ResourceBundle resources) { 
colCarModel.setCellValueFactory(new PropertyValueFactory<TableDisplayData, String>("car")); 
colModelIndicator.setCellValueFactory(new PropertyValueFactory<TableDisplayData, String>("indicator")); 
colSpeedProgress.setCellValueFactory(new PropertyValueFactory<TableDisplayData, Double>("progressBar")); 
colSpeedProgress.setCellValueFactory(ProgressBarTableCell.<TableDisplayData> forTableColumn()); 
} 

-Code für TableDisplayData:

public class TableDisplayData{ 
private String car; 
private String indicator; 
private DoubleProperty progressBar = new SimpleDoubleProperty(); 

public TableDisplayData(String car, String indicator, double progressBar) { 
    this.car= car; 
    this.indicator = indicator; 
    setProgressBar(progressBar); 
} 
getters & setters.... 

Antwort

3

Sie sind conf Verwenden Sie die cellFactory mit der cellValueFactory. Die cellValueFactory teilt der Spalte was Daten zur Anzeige. Die cellFactory teilt der Spalte wie, um die Daten anzuzeigen. So

Sie benötigen

colSpeedProgress.setCellValueFactory(new PropertyValueFactory<TableDisplayData, Double>("progressBar")); 
colSpeedProgress.setCellFactory(ProgressBarTableCell.<TableDisplayData> forTableColumn()); 

(beachten Sie die zweite Zeile wird geändert setCellFactory, nicht setCellValueFactory).

Verwandte Themen