栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

CheckBoxTableCell changelistener无法正常工作

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

CheckBoxTableCell changelistener无法正常工作

selectedProperty
是从继承
Cell
,它只是指示是否
Cell
在UI部件中选择。由于您可能没有启用单元格选择
TableView
,因此该单元格永远不会被选中。无论如何,这都不是您要找的东西。您想知道是否
CheckBox
选择,而不是
Cell

这里的技巧是使用的

selectedStateCallback
属性
CheckBoxTableCell
。此函数将单元格的索引映射到
BooleanProperty
。这
BooleanProperty
是双向绑定的复选框的选中状态。

如果您的列表示类中的实际属性

Trainee
(我将其称为
selectedProperty
演示),则可以执行以下操作:

final CheckBoxTableCell<Trainee, Boolean> ctCell = new CheckBoxTableCell<>();ctCell.setSelectedStateCallback(new Callback<Integer, Observablevalue<Boolean>>() {    @Override    public Observablevalue<Boolean> call(Integer index) {        return table.getItems().get(index).selectedProperty();    }});

然后,将

Trainee
类中的属性与复选框状态双向绑定。如果您需要做的事情不仅仅是在选中/取消选中复选框时更新模型对象,则可以观察该属性。

如果您在

Trainee
类中没有属性,则可以创建一个
BooleanProperty
并观察它:

final CheckBoxTableCell<Trainee, Boolean> ctCell = new CheckBoxTableCell<>();final BooleanProperty selected = new SimpleBooleanProperty();ctCell.setSelectedStateCallback(new Callback<Integer, Observablevalue<Boolean>>() {    @Override    public Observablevalue<Boolean> call(Integer index) {        return selected ;    }});selected.addListener(new ChangeListener<Boolean>() {    @Override    public void changed(Observablevalue<? extends Boolean> obs, Boolean wasSelected, Boolean isSelected) {        System.out.println(isSelected);    }});

像往常一样,所有这些代码在Java 8中看起来都更好。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/487059.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号