Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vaadin:如何在TreeGrid上设置跌落标准_Vaadin_Treegrid_Vaadin8 - Fatal编程技术网

Vaadin:如何在TreeGrid上设置跌落标准

Vaadin:如何在TreeGrid上设置跌落标准,vaadin,treegrid,vaadin8,Vaadin,Treegrid,Vaadin8,我正在尝试允许在条件变为真时(例如节点不是叶)在树ID中删除项目 节点: 公共类节点{ 列出儿童名单; ... 公共布尔isLeaf(){ 返回孩子们 } } TreeView: public class TreeView extends TreeGrid<Node> { public TreeView(){ ... TreeGridDropTarget<Node> dropTarget = new TreeGridDropTarget&

我正在尝试允许在条件变为真时(例如节点不是叶)在树ID中删除项目

节点:

公共类节点{
列出儿童名单;
...
公共布尔isLeaf(){
返回孩子们
}
}
TreeView:

public class TreeView extends TreeGrid<Node> {
    public TreeView(){
        ...
    TreeGridDropTarget<Node> dropTarget = new TreeGridDropTarget<>(this, DropMode.ON_TOP);
    dropTarget.setDropEffect(DropEffect.MOVE);
    dropTarget.addGridDropListener(event -> {
        event.getDragSourceExtension().ifPresent(source -> {
            Notification.show("it works");
            });
        });
     }
  }
公共类TreeView扩展了TreeGrid{
公共树视图(){
...
TreeGridDropTarget dropTarget=新的TreeGridDropTarget(此,DropMode.位于顶部);
dropTarget.setDropEffect(DropEffect.MOVE);
dropTarget.addGridDropListener(事件->{
event.getDragSourceExtension().ifPresent(源->{
通知。显示(“它起作用”);
});
});
}
}

如何检查网格元素是否允许包含子元素?那么如何添加验收标准呢?

在drop target扩展中有一个
setDropCriteriaScript
方法可用,但这涉及到一些JavaScript攻击,因此我不建议使用它。另外,我不知道你是否有正确的上下文。另一个选项是扩展
TreeGrid
并进行一些客户端编程,但这并不容易。您可以使用
(Node)source.getSource()获取节点对象吗?@avix我想在客户端进行检查,所以悬停时应该有一个例如禁止图标的例子。@SteffenHarbich你有任何例子吗?我以前没有做过类似的事情,所以很遗憾我没有例子。drop目标扩展中有一个
setDropCriteriaScript
方法可用,但这涉及到一些JavaScript攻击,所以我不建议使用它。另外,我不知道你是否有正确的上下文。另一个选项是扩展
TreeGrid
并进行一些客户端编程,但这并不容易。您可以使用
(Node)source.getSource()获取节点对象吗?@avix我想在客户端进行检查,所以悬停应该有一个例子,比如一个禁止的图标。@SteffenHarbich,你有什么例子吗?我以前没有做过类似的事情,所以很遗憾我没有例子。
public class TreeView extends TreeGrid<Node> {
    public TreeView(){
        ...
    TreeGridDropTarget<Node> dropTarget = new TreeGridDropTarget<>(this, DropMode.ON_TOP);
    dropTarget.setDropEffect(DropEffect.MOVE);
    dropTarget.addGridDropListener(event -> {
        event.getDragSourceExtension().ifPresent(source -> {
            Notification.show("it works");
            });
        });
     }
  }