【问题标题】:JavaFX - TableView ProgressBar (Error - setCellValueFactory cannot be applied)JavaFX - TableView ProgressBar(错误 - 无法应用 setCellValueFactory)
【发布时间】:2016-08-28 01:25:12
【问题描述】:

我正在使用 FXML 创建一个带有 ProgressBar 的 TableView。对于下面代码中包含 ProgressBarTableCell 的行,我收到如下错误。我提到了Link1 & Link2,但无法弄清楚我在做什么。

错误:

'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>>)'

代码:

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

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....

【问题讨论】:

    标签: progress-bar tableview javafx-8


    【解决方案1】:

    您将cellFactorycellValueFactory 混淆了。 cellValueFactory 告诉列 what 数据要显示。 cellFactory 告诉列如何显示数据。

    所以你需要

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

    (注意第二行改为setCellFactory,而不是setCellValueFactory)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-29
      • 2018-04-21
      • 2012-10-05
      • 2017-07-19
      • 2019-01-17
      • 1970-01-01
      相关资源
      最近更新 更多