【发布时间】:2016-07-12 12:12:08
【问题描述】:
如何检测CheckBoxTreeItem 何时被选中或取消选中?
我是否使用事件处理程序或更改侦听器或其他什么?我要检查什么事件?是否有我可以监听的事件列表,例如 checkboxtreeitem.selection 之类的?
谢谢
【问题讨论】:
标签: java javafx javafx-2 javafx-8
如何检测CheckBoxTreeItem 何时被选中或取消选中?
我是否使用事件处理程序或更改侦听器或其他什么?我要检查什么事件?是否有我可以监听的事件列表,例如 checkboxtreeitem.selection 之类的?
谢谢
【问题讨论】:
标签: java javafx javafx-2 javafx-8
例如,您可以通过在创建树的节点时添加监听器来监听 CheckBoxTreeItem 的 selectedProperty:
CheckBoxTreeItem<String> rootItem = new CheckBoxTreeItem<String>("Root");
rootItem.setExpanded(true);
final TreeView<String> tree = new TreeView<String>(rootItem);
tree.setEditable(true);
tree.setCellFactory(CheckBoxTreeCell.<String> forTreeView());
for (int i = 0; i < 8; i++) {
CheckBoxTreeItem<String> checkBoxTreeItem = new CheckBoxTreeItem<String>("Item" + (i + 1));
checkBoxTreeItem.selectedProperty().addListener((obs, oldVal, newVal) -> {
System.out.println(checkBoxTreeItem.getValue() + " selection state: " + newVal);
});
rootItem.getChildren().add(checkBoxTreeItem);
}
这棵树打印例如:
Item8 selection state: true
Item8 selection state: false
【讨论】:
你可以去看看javadoc:https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/CheckBoxTreeItem.html
你会看到有一个叫做'addEventHandler'的方法,我想这就是你要找的。p>
public <E extends Event> void addEventHandler(EventType<E> eventType,
EventHandler<E> eventHandler)
'向此 TreeItem 注册一个事件处理程序。 TreeItem 类允许注册侦听器,这些侦听器将在项目数量发生变化、它们的位置或值本身发生变化时得到通知'
【讨论】: