问题描述
我有一个带有层次结构的 TreeGrid,我想为其添加拖放功能。
我的问题是,我只想要两种类型的元素是可拖动的,并且只能将它们放入这两种类型和根元素中。
到目前为止,我只能通过在元素是不同类型的元素时返回 dragStartEvent 来设法只允许拖动这些元素。
但是当它是一个网格时,我如何自定义允许的 dropTargets?
现在用户可以将元素放在任何其他网格元素上,如果 dropTarget 不是所需的类型,我唯一能做的就是显示错误消息,但这不是一个好的解决方案,他们应该在拖动时看到不能在那里放置的物品。
解决方法
网格有一个拖放过滤器,您可以使用它来决定是拖放还是拖放。
void setDragFilter(SerializablePredicate<T> dragFilter)
Sets the drag filter for this drag source.
void setDropFilter(SerializablePredicate<T> dropFilter)
Sets the drop filter for this drag target.
请查看文档 https://vaadin.com/components/vaadin-grid/java-examples/drag-and-drop