我有一个表,列出Bot
类型的对象,这些对象具有我要列出的名称和isOn
属性:
private SimpleStringProperty name;
private boolean isOn;
布尔值isOn,我想从复选框中读取,也可以从该复选框中编辑
到目前为止,我已经能够在表格中为每一行添加一个复选框,但它纯粹是可视的(即它与Bot
的{{1}}成员无关)
如何从isOn
这是我完全处理表格的代码:
Bot
答案 0 :(得分:1)
如果单元格变空,则需要删除该复选框。此外,您需要在用户与WHERE
交互时更新值。从侦听器到CheckBox
属性更好:
selected
此外,您的private class AddBotCell extends TableCell<Bot, Boolean> {
// a button for adding a new person.
final CheckBox checkbox = new CheckBox();
// pads and centers the add button in the cell.
final StackPane paddedCheckBox = new StackPane();
// records the y pos of the last button press so that the add person dialog can be shown next to the cell.
final DoubleProperty buttonY = new SimpleDoubleProperty();
private boolean updating = false;
AddBotCell(/*final Stage stage, final TableView table*/) {
setContentDisplay(ContentDisplay.GRAPHIC_ONLY);
paddedCheckBox.setPadding(new Insets(3));
paddedCheckBox.getChildren().add(checkbox);
checkbox.selectedProperty().addListener((o, oldValue, newValue) -> {
if (!updating) {
updating = true;
((Bot)getTableRow().getItem()).setIsOn(newValue);
updating = false;
}
});
}
/** places an add button in the row only if the row is not empty. */
@Override protected void updateItem(Boolean item, boolean empty) {
super.updateItem(item, empty);
if (empty || item == null) {
setGraphic(null);
} else {
setGraphic(paddedCheckBox);
updating = true;
checkbox.setSelected(item);
updating = false;
}
}
}
应使用该属性的值。
cellValueFactory