Я пересматриваю свой вопрос на основе комментариев. У меня есть JavaFX TableView, для которого количество столбцов флажка известно только во время выполнения. Итак, чтобы создать столбцы, я делаю:EDIT: Модель для TableView с динамическим номером столбца
TableColumn attributeColumn = new TableColumn("Attribut");
attributeColumn.setCellValueFactory(new PropertyValueFactory<AttributeRow, String>("name"));
attributeTable.getColumns().add(attributeColumn);
for (String group : companyGroups)
{
TableColumn< AttributeRow, Boolean > groupColumn = new TableColumn<>(group);
groupColumn.setCellFactory(CheckBoxTableCell.forTableColumn(groupColumn));
groupColumn.setCellValueFactory(f -> f.getValue().activeProperty());
groupColumn.setEditable(true);
attributeTable.getColumns().add(groupColumn);
}
Вопрос в том, как будет выглядеть модель таблицы для этого TableView? Если бы фиксированное число столбцов CheckBox, скажем, 2 колонки, моя модель выглядит следующим образом:
public class AttributeRow {
private SimpleStringProperty name;
private SimpleBooleanProperty active = new SimpleBooleanProperty(false);
public AttributeRow(String name, Boolean active) {
this.name= new SimpleStringProperty(name);
}
public SimpleStringProperty nameProperty() {
if (name == null) {
name = new SimpleStringProperty(this, "name");
}
return name;
}
public String getAttributeName() {
return name.get();
}
public void setAttributeName(String fName) {
name.set(fName);
}
public final SimpleBooleanProperty activeProperty() {
return this.active;
}
public final boolean isActive() {
return this.activeProperty().get();
}
public final void setActive(final boolean active) {
this.activeProperty().set(active);
}
}
Эта модель работает, если у меня есть один столбец строки и один столбец флажок. Но что мне делать, если у меня есть мультикарные столбцы флажка, для которых число известно только во время выполнения?
Не могли бы вы объяснить, что вы пытаетесь достичь? Почему бы не изменить соответствующее свойство в модели, отображаемой таблицей? – Itai
Поскольку у меня есть TableView с динамическим числом столбцов флажка, то есть количество столбцов может быть определено только во время выполнения. Поэтому я не могу использовать модель, потому что не знаю во время проектирования, сколько свойств мне действительно нужно. – user41854
Как представляются данные? Даже если это в массивах или списках, которые все еще будут возможны. «TableView» использует виртуализацию ячеек, поэтому изменение элементов управления (UI) может ненадежно изменить все объекты данных. – Itai