Java Fx 将整数属性数组绑定到多列

Java Fx bind array of IntegerProperties to multiple columns

结果

public class Results {
    
    
    //Variables
    private final StringProperty id;
    private final StringProperty firstName;
    private final StringProperty name;
    ... 
    private final IntegerProperty[] points;
    
    ...
    ...
    
    public StringProperty idProperty() {
        return id;
    }
    ...
    
    
    public IntegerProperty[] getPoints() {
        return points;
    }
    
    public IntegerProperty propertyAt (int index) {
        return points [index];
    }
}
    

但是我不知道如何用 IntegerPropertiy[]

做同样的事情
    @FXML
    private TableView<Results> tableView;
    @FXML
    private TableColumn<Results, String> idColumn;
    @FXML
    private TableColumn<Results, String> nameColumn;
    ...

    ...
    idColumn.setCellValueFactory(new PropertyValueFactory<>("id"));
    nameColumn.setCellValueFactory(new PropertyValueFactory<>("name"));
    firstNameColumn.setCellValueFactory(new PropertyValueFactory<>("firstName"));

table 目前看起来是这样的: Points[0] 应该是 Points 1 等等 table

所以基本上问题是,是否有一种方法可以让我以与其他属性类似的方式使用 IntegerProperty[] 点,是否有人可以用简单的方式向我解释一下。

如果您的列是在 FXML 中定义的:

@FXML
private TableColumn<Results, Number> pointsColumn1 ;

// etc...

@FXML
private void initialize() {
    // ...

    pointsColumn1.setCellValueFactory(cd -> cd.getValue().propertyAt(0));
    // etc....
}

当然,在 Java 中创建这些列可能比在 FXML 中更容易:

@FXML
private void initialize() {

    int numPoints = 8 ; 
    for (int i = 1 ; i <= numPoints ; i++) {
        TableColumn<Results, Number> column = new TableColumn<>("Points "+i);
        final int index = i - 1 ;
        column.setCellValueFactory(cd -> cd.getValue().propertyAt(index));
        tableView.getColumns().add(column);
    }

    // ...
}