javaFX Tree View控件绑定CheckBoxTreeCell获取值
javaFXTreeView控件通过setCellFactory方法设置TreeCell为CheckBoxTreeCell后,怎么获取勾选的节点用treeVew.getS...
javaFX Tree View控件通过setCellFactory方法设置TreeCell为CheckBoxTreeCell后,怎么获取勾选的节点
用treeVew.getSelectionModel().getSelectedItems()只能获取点击选中节点 不可以获取勾选的节点。 展开
用treeVew.getSelectionModel().getSelectedItems()只能获取点击选中节点 不可以获取勾选的节点。 展开
1个回答
推荐于2016-11-10
展开全部
JavaFX 2.0 有监听功能的。比如:
treeVew.getSelectionModel().selectedItemProperty().addListener(new ChangeListener(){
@Override
public void changed(ObservableValue observable,Object oldValue, Object newValue){
system.out.println("selection change");
}
});
还有 监听FocusModel(焦点模型)
treegetFocusModel().focusedItemProperty().addListener(new ChangeListener<TreeItem>() {
@Override
public void changed(
ObservableValue<? extends TreeItem> observable,
TreeItem oldValue, TreeItem newValue) {
system.out.println("tree selection changed");
}
});
更多追问追答
追问
非常感谢你的提醒,但还是未能解决我的问题 我是想勾选时候就可以取到相应TreeItem 我应该去监听勾选事件 勾选的时候就选中对于的item,应该是这个思路吧,现在问题是我没发获取勾选事件。我是用treeVew.setCellFactory(CheckBoxTreeCell. forTreeView());显示勾选的。请问我思路对吗 应该怎么实现,其实就是想勾选多个的时候获取多个item
追答
我回去看了下 可以用rootItem.getChildren().iterator()来做(rootItem是CheckBoxTreeItem实例对象,也就是treeView的设置的根root),下面是 示例:
//这个button 用来 获取 勾选的item,结果在控制台打印
Button btn=new Button("show selected");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
//此处使用getSelectionModel().getSelectedItems()会取得 点选的条目,而不是勾选的条目
//System.out.println(tree.getSelectionModel().getSelectedItems().get(0));
//此处使用rootItem.getChildren().iterator() 后 得到的TreeItem强制转为CheckBoxTreeItem,利用CheckBoxTreeItem的isSelected()
//将会取得勾选的条目 点选的不会取得
for(Iterator<TreeItem<String>> iterator=rootItem.getChildren().iterator();iterator.hasNext();){
CheckBoxTreeItem<String> item=(CheckBoxTreeItem<String>) iterator.next();
if(item.isSelected()){
//获得勾选的item
System.out.println(item);
}
}
}
});
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询