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);
}
// ...
}
结果
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);
}
// ...
}