Vaadin14自定义网格拖放



我有一个带有层次结构的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

最新更新