当前位置: 首页 > 知识库问答 >
问题:

复选框表单元格仅显示未选中的框

郭志
2023-03-14

我尝试将CheckBoxTableCell添加到我的TableColumn中,但是无论值是真还是假,单元格都只显示未选中的框

我的对象

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));
....
}

我已经通过使用布尔属性类型创建一个新变量并使用新变量更改 PropertyValueFactory 参数解决了这个问题
,问题是我不想使用布尔属性或属性
,因为我的所有模型类仍然使用标准类型而不是属性
有办法做到这一点吗?
如果没有,也许我只是将所有模型类变量更改为属性变量

共有2个答案

丌官炎彬
2023-03-14

我会使用以下方法执行此操作:

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));

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

丁文轩
2023-03-14

为了使单元格与属性保持同步,需要在属性值更改时通知单元格。这是JavaFX属性类提供的功能。有很多方法可以绑定到传统的Java Bean属性,但是它们涉及更多的“连接”,并且最终会比使用JavaFX属性类更复杂。这个问题类似。

 类似资料:
  • 我试图在我的表单上添加一个布尔字段,并用crispyforms标记呈现它。除复选框外,所有内容都显示出来。 我的项目使用django 2.1、python 3.6和Bootstrap-4。我的Django Crispy Forms版本是:1.7。2. 领域为<码>投资。 模型字段不工作: My form: 我的观点: 对于模板,我尝试了两种方法,但都不起作用: 我的模板01: 这是我想在最后使用的

  • 问题内容: 我有如下形式: 当我选中所有复选框并发布表单时,结果如下所示: 然后我取消选中第二个复选框并发布表单,结果是这样的: 当我取消选中第二个复选框时,是否有可能得到如下所示的结果: 有想法吗? 问题答案: 第一种方法-隐藏字段(缺点:用户可以操纵字段的值(但是也可以操纵复选框的值,因此,如果只期望1或0,这不是真正的问题)) 第二种方法-为未设置的索引分配默认值:

  • 此表单在基于函数的视图中显示单选按钮,但在我引入基于类的视图时更改为复选框,有什么解决办法。我希望他们再次显示单选按钮 表单.py models.py 模板 views.py

  • 问题内容: 我有一个JTable,我想用自定义渲染器尝试检查isEnabled()的所有禁用的复选框单元变灰,然后更改背景颜色,但仍然无法使用。有什么建议么?谢谢!!! 问题答案: 如“ 概念:编辑器和渲染器 ”中所述,“通常使用单个单元格渲染器来绘制包含相同类型数据的所有单元格。” 您需要维护表模型中的enabled状态。 附录:作为一个具体示例,此示例中的数据模型是一组简单的Date实例。ge

  • 我想用复选框显示所有行,所有列,因为我只想要true/false值。但是我想访问单个单元格值,即每个复选框都可以选中/不选中。见下图。 根据我的知识,当我勾选复选框时,行的所有复选框都将被选中。那么,我可以选中/取消选中单个框吗?

  • 我希望在选中表中的所有复选框时选中标题复选框,如果没有选中单个复选框,则应取消选中标题复选框。