我有一张表来列出订单。 如果我想用表的属性绑定表列,我这样做:
<TableColumn prefWidth="361.0" text="Name">
<cellValueFactory>
<PropertyValueFactory property="person" />
</cellValueFactory>
</TableColumn>
但是如果我想用这个属性的属性绑定它?我试过这样做,但是id没有用:
<TableColumn prefWidth="361.0" text="Name">
<cellValueFactory>
<PropertyValueFactory property="person.age" />
</cellValueFactory>
</TableColumn>
怎么做?
这是我的模特课:
public class Order{
private Integer number;
private Date date;
private Person person;
//getters and setters...
}
这是Person类:
public class Person{
private String name;
private Integer age;
//getters and setters...
}
答案 0 :(得分:1)
您不能在此处直接在FXML中设置单元格工厂,除非您遇到使自己的类实现相应的Callback
的麻烦。
而是在控制器中设置单元工厂:
<TableColumn prefWidth="361.0" text="Name" fx:id="ageColumn"/>
并在控制器中:
public class Controller {
@FXML
private TableColumn<Order, Integer> ageColumn ;
public void initialize() {
ageColumn.setCellValueFactory( data -> {
Order order = data.getValue();
Person person = order.getPerson();
Integer age = person.getAge();
return new ReadOnlyIntegerWrapper(age);
});
//...
}
);