JavaFX - TableView ProgressBar(错误 - 无法应用 setCellValueFactory)
JavaFX - TableView ProgressBar (Error - setCellValueFactory cannot be applied)
我正在使用 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....
您将 cellFactory
与 cellValueFactory
混淆了。 cellValueFactory
告诉列 要显示什么 数据。 cellFactory
告诉列 如何 显示数据。
所以你需要
colSpeedProgress.setCellValueFactory(new PropertyValueFactory<TableDisplayData, Double>("progressBar"));
colSpeedProgress.setCellFactory(ProgressBarTableCell.<TableDisplayData> forTableColumn());
(注意第二行改为setCellFactory
,不是setCellValueFactory
)。
我正在使用 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....
您将 cellFactory
与 cellValueFactory
混淆了。 cellValueFactory
告诉列 要显示什么 数据。 cellFactory
告诉列 如何 显示数据。
所以你需要
colSpeedProgress.setCellValueFactory(new PropertyValueFactory<TableDisplayData, Double>("progressBar"));
colSpeedProgress.setCellFactory(ProgressBarTableCell.<TableDisplayData> forTableColumn());
(注意第二行改为setCellFactory
,不是setCellValueFactory
)。