Gwt 单击树中的某个项目时,垂直滚动条会向上跳

Gwt 单击树中的某个项目时,垂直滚动条会向上跳,gwt,tree,uibinder,gwtp,Gwt,Tree,Uibinder,Gwtp,看看这个简单的代码 Tree testTree=new Tree(); TreeItem testTreeItem=new TreeItem("test"); TreeItem testTreeItem2=new TreeItem("test2"); more TreeItem.... testTree.addItem(testTreeItem1); testTree.addItem(testTreeItem2); ........ 现在,调整浏览器的大小,以便可以看到右侧的

看看这个简单的代码

 Tree testTree=new Tree(); 
 TreeItem testTreeItem=new TreeItem("test");
 TreeItem testTreeItem2=new TreeItem("test2");
 more TreeItem....

 testTree.addItem(testTreeItem1);
 testTree.addItem(testTreeItem2);
 ........
现在,调整浏览器的大小,以便可以看到右侧的垂直滚动条。现在,单击最底部的树项ex
testTreeItem10
,您将看到垂直滚动条向上跳转,而不是停留在当前位置

使用UiBinder时也会发生此错误

<g:Tree ui:field="myTree"> 
<g:TreeItem text="Item 1" /> 
<g:TreeItem text="Item 2" /> .....
</g:Tree>

.....

另外,
Tree
addItem
也被弃用了,那么如何解决这个问题呢?

这个黑客代码可能有效,但我不确定它是正确的修复方法还是优雅的修复方法

这个黑客代码将来会被破解吗

顺便说一下,只需稍微修改一下树:

    Tree testTree=new Tree(){

        public void onBrowserEvent(Event event) {
            if (DOM.eventGetType(event) == Event.ONCLICK) {

                return;
            }

            if (DOM.eventGetType(event) == Event.ONMOUSEDOWN) {
                //int s = scrollPanel.getVerticalScrollPosition();
                int scrollLeftInt = Window.getScrollLeft();
                int scrollTopInt = Window.getScrollTop();
                DOM.setStyleAttribute(this.getElement(), "position",
                        "fixed");
                super.onBrowserEvent(event);
                DOM.setStyleAttribute(this.getElement(), "position",
                        "static");

                //scrollPanel.setVerticalScrollPosition(s);
                Window.scrollTo(scrollLeftInt,scrollTopInt);
                return;
            }

            super.onBrowserEvent(event);
        }

    };

不久前我正在解决这个问题。这段代码帮了我的忙

private Tree gwtTree = new Tree(){
        @Override
        public void setFocus(boolean focus) {
            //Do not do anything!
        }
    };

是GWT的官方支持论坛吗?我不知道。我打赌其他人也没有。如果这真的是GWT中的一个bug,你最好向他们报告这个问题,我认为这个bug似乎是从2007年开始出现的,但不知何故谷歌没有正确修复。你是否尝试了上一条评论中建议的代码?它被标记为
//下面的snnipet工作得很好
,是的,但它喜欢黑客代码,它可能会在future@KitiGWT是开源的,正在等待您的补丁:;StackOverflow只能为您提供变通方法,如果您拒绝使用它们,则会出现问题…