【问题标题】:JavaFX CheckBoxTreeItem detect when checkbox selected or unselectedJavaFX CheckBoxTreeItem 检测复选框何时选中或未选中
【发布时间】:2016-07-12 12:12:08
【问题描述】:

如何检测CheckBoxTreeItem 何时被选中或取消选中?

我是否使用事件处理程序或更改侦听器或其他什么?我要检查什么事件?是否有我可以监听的事件列表,例如 checkboxtreeitem.selection 之类的?

谢谢

【问题讨论】:

    标签: java javafx javafx-2 javafx-8


    【解决方案1】:

    例如,您可以通过在创建树的节点时添加监听器来监听 CheckBoxTreeItemselectedProperty

    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
    

    【讨论】:

      【解决方案2】:

      你可以去看看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 类允许注册侦听器,这些侦听器将在项目数量发生变化、它们的位置或值本身发生变化时得到通知'

      【讨论】:

      • 为什么当我使用follow时它会激活两次,即当我只选择复选框时显示aa? ' public void setTreeViewEventHandler(CheckBoxTreeItem checkBoxTreeItem) { checkBoxTreeItem.addEventHandler(CheckBoxTreeItem.checkBoxSelectionChangedEvent(), new EventHandler>() { public void handle(CheckBoxTreeItem.TreeModificationEvent 事件) { System.out.print("a"); } }); }'
      • 尝试打印事件记录器:handle() 方法中的'CheckBoxTreeItem.TreeModificationEvent event'
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多