如何向表中添加复选框,以读取和写入它在JavaFX中表示的对象属性

时间:2018-04-26 07:01:12

标签: java javafx checkbox tableview tablecell

我有一个表,列出Bot类型的对象,这些对象具有我要列出的名称和isOn属性:

private SimpleStringProperty name;
private boolean isOn;

布尔值isOn,我想从复选框中读取,也可以从该复选框中编辑

到目前为止,我已经能够在表格中为每一行添加一个复选框,但它纯粹是可视的(即它与Bot的{​​{1}}成员无关)

如何从isOn

的成员中读取和写入复选框?

这是我完全处理表格的代码:

Bot

1 个答案:

答案 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