为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

泛舟湖上清波郎朗 2021-08-25 17:48:20
我正在尝试创建一个包含复选框树项目的 JavaFX 树视图。我要求所有有孩子的节点都应该被禁用。但是这些节点的所有子节点都应该是可点击的。基本上,如果树项是叶子,它应该被启用和点击。这是我使用的当前代码。这会禁用带有子节点的节点,但问题是,由于它被禁用,我无法访问父节点中的代码。public class App extends Application{public static void main( String[] args ){    launch(args);}private List<Dependant> myList = new ArrayList();@SuppressWarnings("unchecked")@Overridepublic 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 属性绑定到名称是否等于“文件夹” 。如果有人想知道为什么我需要禁用所有父节点,那是因为在最终实现中,我只需要在整个树视图中选择一项(因为单击父节点也会选择其所有子节点!)。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 202 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信