当树节点比较多(自动出现垂直滚动条)时,用代码选中一个节点(在当前显示区域外),是否有方法可以控制滚动条让选中的节点出现在可见区域中?
你说的是这样 的效果吗?因为 CUBA 底层是 vaadin,这种操作查 vaadin 文档必查 cuba 文档好。CUBA 的 UI 通过 unwrap 就可以拿到 vaadin 的 UI 实例。
本质上 CUBA 的 UI 仅仅是对 Vaadin 组件的封装,但是它并没有代理所有功能
1 个赞
多谢!实现了,代码如下:
public <T> boolean scrollTo(CubaTree<T> tree,T item , ScrollDestination destination) {
HierarchicalDataCommunicator<T> dataCommunicator = tree.getCompositionRoot().getDataCommunicator();
Method getHierarchyMapper = null;
try {
getHierarchyMapper = HierarchicalDataCommunicator.class.getDeclaredMethod("getHierarchyMapper");
getHierarchyMapper.setAccessible(true);
HierarchyMapper<T, ?> mapper = (HierarchyMapper) getHierarchyMapper.invoke(dataCommunicator);
int row= mapper.getIndexOf(item).get();
if(row>=0) {
tree.scrollTo(row, destination);
return true;
}
} catch (Exception e) {
}
return false;
}
1 个赞
得到某一个component 的实例以后也可以这样
import com.vaadin.ui.UI;
UI.getCurrent().scrollIntoView(component.unwrap(com.vaadin.ui.Component.class));