【发布时间】:2020-12-15 20:31:33
【问题描述】:
在我的任务中,我需要在表格中显示 Cars 的 ID。我看到了 get 和 set 的可能解决方案,但它不起作用。我有 2 个类 CarEntity 和 Cars。
CarEntity 类:
public abstract class CarEntity implements Serializable {
private Long id;
private String name;
public CarEntity (Long id, String name) {
this.id = id;
this.name= name;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
//+ 获取并设置名称
Class Cars 扩展了 CarEntity,我对 table 中的 nameOfCar 没有任何问题。
This is Controller:
List<Cars> listOfCars;
@FXML
private TextField idOfCar;
@FXML
private TextField nameOfCar;
@FXML private TableColumn <Cars, Long> colIfOfCar;
@FXML private TableColumn<Cars, String> colNameofCar;
在初始化时我有:;
colIfOfCar.setCellValueFactory(new PropertyValueFactory<>("id"));
colNameofCar.setCellValueFactory(new PropertyValueFactory<>("name"));
我得到的错误:
警告:无法在 PropertyValueFactory 中检索属性“idOfCar”: javafx.scene.control.cell.PropertyValueFactory@43a5f6f 提供 类类型:类 main.carstore.model.Cars java.lang.IllegalStateException:无法从不可读的属性中读取 idOfCar
【问题讨论】:
-
您是否确定您的代码包含
new PropertyValueFactory<>("id")而不是new PropertyValueFactory<>("idOfCar")?最好完全避免使用 PropertyValueFactory,因为在编译时无法捕获反射错误;一个更好的选择是向 CarEntity 类添加属性访问器,就像大多数标准 JavaFX 类一样,然后使用它们来编写您自己的单元格值工厂表达式。 -
minimal reproducible example 请 .. 您的 sn-p 不符合 @VGR 已经指出的错误消息 ..
标签: java javafx controller