【发布时间】:2012-07-01 20:16:55
【问题描述】:
我正在编写某种对象浏览器,按文件夹组织。当用户选择列表中的某个文件夹时,我必须在树中展开适当的节点。
我已经实现了树扩展,树中的元素选择,但是扩展可能发生在树的可见区域之外的部分(CellTree 在 ScrollPane 上)。
所以,我确实有一个 TreeNode 的实例 - 我如何以编程方式滚动以使其可见?
【问题讨论】:
标签: gwt
我正在编写某种对象浏览器,按文件夹组织。当用户选择列表中的某个文件夹时,我必须在树中展开适当的节点。
我已经实现了树扩展,树中的元素选择,但是扩展可能发生在树的可见区域之外的部分(CellTree 在 ScrollPane 上)。
所以,我确实有一个 TreeNode 的实例 - 我如何以编程方式滚动以使其可见?
【问题讨论】:
标签: gwt
目前的 API 是不可能的,但是你可以尝试一下,我还没有测试过,但应该很容易:
<input type="hidden" id="yourObjectId"/>
SelectionModel。yourSelectionModel.setSelected(object,true);。这应该会展开树并显示您选择的对象。Element cellTreeElement = yourCellTree.getElement(); NodeList<Element> objectIds = cellTreeElement.getElementsByTagName("input"); for ( int i=0;i<elementsByTagName.getLength();i++ ) { Element e = objectIds .getItem( i ); if (e.getId().equals( yourObjectId ) { e.scrollIntoView(); } }
很确定这应该可以正常工作。
【讨论】:
另一个版本(如果你想将元素移动到 CellTree 的顶部):
Element cellTreeElement = yourCellTree.getElement();
NodeList<Element> objectIds = cellTreeElement.getElementsByTagName("input");
for (int j = 0; j < objectIds.getLength(); j++) {
Element e = objectIds.getItem(j);
if (e.getId().equals("r" + iDistrictID)) {
yourCellTree.getElement().getParentElement().getParentElement().setScrollTop(e.getParentElement().getParentElement().getOffsetTop());
}
}
【讨论】: