2
我有一個TreeTableView<MyCustomRow>
,我想動態添加列。在MyCustomRow
我有一個Map<Integer, SimpleBooleanProperty>
與行中的值。我以這種方式添加新列:JavaFx動態列值
private TreeTableColumn<MyCustomRow, Boolean> newColumn() {
TreeTableColumn<MyCustomRow, Boolean> column = new TreeTableColumn<>();
column.setId(String.valueOf(colNr));
column.setPrefWidth(150);
column.setCellValueFactory(data -> data.getValue().getValue().getValue(colNr));
column.setCellFactory(factory -> new CheckBoxTreeTableCell());
column.setEditable(true);
colNr++;
return column;
}
然後table.getColumns().add(newColumn())
。
問題是,當我連續檢查一個CheckBox
時,該行中的所有複選框都被檢查。這裏是我行的代碼:
public class MyCustomRow {
private Map<Integer, SimpleBooleanProperty> values = new HashMap<>();
public MyCustomRow(Map<Integer, Boolean> values) {
values.entrySet().forEach(entry -> this.values
.put(entry.getKey(), new SimpleBooleanProperty(entry.getValue())));
}
public SimpleBooleanProperty getValue(Integer colNr) {
if (!values.containsKey(colNr)) {
values.put(colNr, new SimpleBooleanProperty(false));
}
return values.get(colNr);
}
}
所以我設置取決於colNr
單元格的值,我也試着調試和似乎值在values
地圖不同,所以我不知道爲什麼所有的複選框都選中時只檢查一個。
非常感謝你,它工作得很好:) – Sunflame