GWT树变更位置

时间:2013-04-16 08:37:08

标签: gwt tree onclick

我在GWT WebApp中添加了一个Tree。现在,当您单击一个元素时,整个站点都向下滚动。这通常意味着我将焦点放在我单击的对象上,因此我必须移动鼠标并再次单击该项目。

当你总是要在一个项目上点击两次时,这非常烦人。

也许有可能删除这个“自动对焦选项”,或者有人有其他想法?

2 个答案:

答案 0 :(得分:2)

GWT 2.5.1有一个新选项来修复滚动到视图行为。 创建新的Tree对象后调用

tree.setScrollOnSelectEnabled(false);

禁用选择滚动。

请记住,之后您的树将始终设置为(0,0)滚动位置。这意味着如果树碰巧有滚动条可能会有问题(它会滚动到顶部而不是将焦点保持在选定的项目上)。

答案 1 :(得分:1)

还可以滚动到所选项目,例如,从代码隐藏创建时:

tree.addItem(treeItem);
treeItem.getElement().scrollIntoView();

虽然在添加和禁用之后动态启用autoscroll(setScrollOnSelectEnabled)可能无法按预期工作

upd:当treeitem是启用了自动滚动的小部件时,会出现问题。单击项目两次滚动树顶。纯文本仍然没法。

upd2:在某些IE中,setScrollOnSelectEnabled(false)没有效果,焦点仍然是在小部件项目上单击。原因似乎执行流最终到达Element.focus(),导致不正确的行为(由于不正确的元素?)。它从onSelection开始(moveFocus = true)。使用moveFocus = false就可以了。要禁用此功能,需要在禁用moveFocus的情况下创建自己的Tree版本,并调用Element.focus()以获取正确的元素。

但! setScrollOnSelectEnabled(true)很好,没有跳到项目第二次点击!因此,根据检测到的浏览器,解决方法是启用此设置。