【问题标题】:JavaFX unreadable propertyJavaFX 不可读属性
【发布时间】: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&lt;&gt;("id") 而不是new PropertyValueFactory&lt;&gt;("idOfCar")?最好完全避免使用 PropertyValueFactory,因为在编译时无法捕获反射错误;一个更好的选择是向 CarEntity 类添加属性访问器,就像大多数标准 JavaFX 类一样,然后使用它们来编写您自己的单元格值工厂表达式。
  • minimal reproducible example 请 .. 您的 sn-p 不符合 @VGR 已经指出的错误消息 ..

标签: java javafx controller


【解决方案1】:

在 Controller Id 中只能是 Id 而不是 idOfSomething

@FXML 私有文本字段 id

【讨论】:

  • 这与您在问题中发布的错误完全无关
猜你喜欢
  • 2015-12-07
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-17
  • 2014-07-15
相关资源
最近更新 更多