javaFX Tree View控件绑定CheckBoxTreeCell获取值

javaFXTreeView控件通过setCellFactory方法设置TreeCell为CheckBoxTreeCell后,怎么获取勾选的节点用treeVew.getS... javaFX Tree View控件通过setCellFactory方法设置TreeCell为CheckBoxTreeCell后,怎么获取勾选的节点
用treeVew.getSelectionModel().getSelectedItems()只能获取点击选中节点 不可以获取勾选的节点。
展开
 我来答
匿名用户
推荐于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);
              }
              }
            }
        });

 

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式