- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试向我的 CheckBoxTableCells 添加一个更改监听器,但它似乎不起作用。我以 CheckBoxes 为例,认为它们的工作方式相同。但是,当我更改其值时没有输出。我如何将一个正确地添加到复选框表单元格中?
当前代码:
tc.setCellFactory(new Callback<TableColumn<Trainee, Boolean>, TableCell<Trainee, Boolean>>() {
@Override
public TableCell<Trainee, Boolean> call(TableColumn<Trainee, Boolean> p) {
final CheckBoxTableCell ctCell = new CheckBoxTableCell<>();
ctCell.selectedProperty().addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue ov, Boolean old_val, Boolean new_val) {
System.out.println(new_val);
}
});
return ctCell;
}
});
最佳答案
selectedProperty
继承自Cell
,它只是指示Cell
是否在UI 组件中被选中。由于您可能没有在 TableView
上启用单元格选择,因此该单元格永远不会被选中。无论如何,这不是您要找的东西;您想知道是否选择了 CheckBox
,而不是 Cell
。
这里的技巧是使用 CheckBoxTableCell
的 selectedStateCallback
属性。这是一个将单元格索引映射到 BooleanProperty
的函数。 BooleanProperty
双向绑定(bind)到复选框的选中状态。
如果您的专栏代表您的 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
类中的属性双向绑定(bind)到复选框状态。如果您需要做的不仅仅是在选中/取消选中复选框时更新模型对象,您可以只观察该属性。
如果您在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 中看起来更漂亮。
关于java - CheckBoxTableCell 更改监听器不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25210690/
我想了解更多关于如何实际使用或子类(如有必要)CheckBoxTableCell。在一个特定的情况下,我想使用这个类,其中复选框不绑定(bind)到底层数据模型属性。 假设我有一个名为“Select”
我有一个关于 JavaFX 库的特殊问题,这可能会揭示我对 JavaFX 框架的总体理解中的缺陷。 让我们假设有一个名为 Entity 的实体类有一个 BooleanProperty叫checked
我正在尝试向我的 CheckBoxTableCells 添加一个更改监听器,但它似乎不起作用。我以 CheckBoxes 为例,认为它们的工作方式相同。但是,当我更改其值时没有输出。我如何将一个正确地
我正在基于此示例在 JavaFX 中创建一个包含可扩展行的表: http://codemonkeycorner.com/post/expandable-table-rows-in-javafx 我还以
在 TableView 中使用 CheckBoxTableCell 我不想在用户单击复选框时执行某些代码。此代码需要在检查 CheckBox 之前以及更改关联的属性之前执行。 由于 CheckBoxT
当通过单击列标题对 TableView 进行排序时,复选框行为变得异常。如果您选中其中一个,另一个似乎已绑定(bind)到它,并且也被选中。 在对 TableView 进行排序之前,一切都按预期进行,
我找不到任何在 TableViewerColumn 中使用 CheckBoxTableCell 的示例,如果有人可以为我提供示例实现,我将不胜感激。 我已经有一个显示一些字符串值的工作模型,但我无法将
我想在用户选中或取消选中 tableView 中的复选框时触发方法或操作。当用户使用 checkBox 时, coursData.addListener(...) 不会被触发。 这是我编译的代码,窗口
我扩展了 SimpleObjectProperty创建自定义延迟加载实现(see here),LazyLoadingObjectProperty . 要将此通用实现用于 boolean 属性,我使用
isText.setEditable(true); isText.setCellValueFactory(new Callback, ObservableValue>() {
我需要一些帮助,即使我的情况很简单。但我不明白为什么 TableView 中的复选框没有获取值。我从 javafx ensemble 中得到了示例 我有课 public class Reservati
在我的 TableView 中,我想要一个包含复选框的列。通过此复选框,用户可以选择要为特定操作(例如删除)标记哪些行。我尝试过使用 CheckBoxTableCell,但我看到的所有示例都已将复选框
我想将 TableViewCell 中的 CheckBox 绑定(bind)到 BooleanBinding。以下示例由具有列 name 和 isEffectiveRequired 的 TableVi
我想知道如何在没有 ObservableProperty 的情况下使用 CheckBoxTableCell。我使用一个简单的 boolean 值,因为我想将数据序列化到我的 DerbyDB。 当然,有
我是一名优秀的程序员,十分优秀!