的
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中看起来都更好。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)