禁用 JavaFX 中的所有父节点,同时保持其所有子节点可点击

我正在尝试创建一个包含复选框树项目的 JavaFX 树视图。我要求所有有孩子的节点都应该被禁用。但是这些节点的所有子节点都应该是可点击的。


基本上,如果树项是叶子,它应该被启用和点击。


这是我使用的当前代码。这会禁用带有子节点的节点,但问题是,由于它被禁用,我无法访问父节点中的代码。


public class App extends Application

{

public static void main( String[] args )

{

    launch(args);

}


private List<Dependant> myList = new ArrayList();


@SuppressWarnings("unchecked")

@Override

public void start(Stage primaryStage) {


    CheckBoxTreeItem<String> rootItem = new CheckBoxTreeItem("Root");

    final List<CheckBoxTreeItem<String>> treeItems = new ArrayList(6);

    for (int i = 0; i < 6; i++) {

        CheckBoxTreeItem<String> item = new CheckBoxTreeItem("L0"+i+"");

        item.setIndependent(true);

        treeItems.add(item);  

        myList.add(new Dependant("0"+i+"", "type1"));

    }

    rootItem.getChildren().addAll(treeItems);


    rootItem.setExpanded(true);

    rootItem.setIndependent(true);

    CheckBoxTreeItem<String> rootItem2 = new CheckBoxTreeItem("folder");

    final List<CheckBoxTreeItem<String>> treeItems2 = new ArrayList(6);

    for (int i = 0; i < 6; i++) {

        CheckBoxTreeItem<String> item = new CheckBoxTreeItem("L1"+i+"");

        item.setIndependent(true);

        treeItems2.add(item); 

        myList.add(new Dependant("0"+i+"", "type2"));

    }

    rootItem2.getChildren().addAll(treeItems2);

    rootItem2.setIndependent(true);

    rootItem.getChildren().set(2,rootItem2);


    TreeView tree = new TreeView(rootItem);



这不是我的应用程序的最终代码,它只是我在进行最终实现之前尝试过的示例代码。


从代码中可以看出,由于方法isLeaf()不可用,单元格的 disabled 属性绑定到名称是否等于“文件夹” 。


如果有人想知道为什么我需要禁用所有父节点,那是因为在最终实现中,我只需要在整个树视图中选择一项(因为单击父节点也会选择其所有子节点!)。


泛舟湖上清波郎朗
浏览 203回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java