Java CheckBoxTableCell仅显示未选中框

Java CheckBoxTableCell仅显示未选中框,java,javafx,tablecell,tablecolumn,Java,Javafx,Tablecell,Tablecolumn,我尝试将CheckBoxTableCell添加到我的TableColumn中,但无论值为true或false,单元格都只显示未选中的框 我的对象 public class Room { private String id,type,category,floor,number; private Boolean status; //setter and getter ........ } 我如何声明表 @FXML private TableView<Room&

我尝试将CheckBoxTableCell添加到我的TableColumn中,但无论值为true或false,单元格都只显示未选中的框

我的对象

public class Room {
    private String id,type,category,floor,number;
    private Boolean status;
    //setter and getter
    ........
}
我如何声明表

@FXML
private TableView<Room> roomTable;
@FXML
private TableColumn ....
@FXML
private TableColumn<Room,Boolean> statusColumn;
public void initialize(){
....
statusColumn.setCellValueFactory(new PropertyValueFactory<Room, Boolean>("status")); // here
statusColumn.setCellFactory(CheckBoxTableCell.forTableColumn(statusColumn));
....
}
@FXML
私人桌景房桌;
@FXML
私人表格栏。。。。
@FXML
私有表列statusColumn;
公共无效初始化(){
....
statusColumn.setCellValueFactory(新属性ValueFactory(“状态”);//此处
statusColumn.setCellFactory(CheckBoxTableCell.forTableColumn(statusColumn));
....
}
我用BooleanProperty类型创建了一个新变量,并用新变量更改了PropertyValueFactory参数,从而解决了这个问题
问题是我不想使用BooleanProperty或Property
因为我的所有模型类仍然使用标准类型,而不是属性
有办法吗

如果没有,也许我只是将所有模型类变量更改为属性变量,以保持单元格与属性同步,当属性值更改时,需要通知单元格。这是JavaFX属性类提供的功能。有很多方法可以绑定到经典的JavaBean属性,但是它们涉及更多的“连接”,并且最终会比使用JavaFX属性类更复杂。与此类似。

我将使用以下方法:

statusColumn.setCellValueFactory(new Callback<CellDataFeatures<Room, Boolean>, ObservableValue<Boolean>>() {
                @Override
                public ObservableValue<Boolean> call(CellDataFeatures<Room, Boolean> room) {
                    return new ReadOnlyBooleanWrapper(room.getValue().getStatus());
                }
            });
statusColumn.setCellFactory(CheckBoxTableCell.forTableColumn(statusColumn));
statusColumn.setCellValueFactory(新回调(){
@凌驾
公共可观察价值呼叫(CellDataFeatures房间){
返回新的ReadOnlyBooleanWrapper(room.getValue().getStatus());
}
});
statusColumn.setCellFactory(CheckBoxTableCell.forTableColumn(statusColumn));

现在,如果您的复选框不可编辑,则可以正常工作。否则,您必须使用JavaBeans属性来保持复选框和状态值的同步。

是的,我认为这会更复杂,我只是想知道如何重写updateItems()方法