0

看看这个简单的代码

 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>

此外,addItemofTree已被弃用,那么如何解决这个问题?

4

2 回答 2

1

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

这种黑客代码将来会破解吗?

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

    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);
        }

    };
于 2013-10-02T07:02:14.720 回答
0

前段时间我正在解决这个问题。这段代码对我有用。

private Tree gwtTree = new Tree(){
        @Override
        public void setFocus(boolean focus) {
            //Do not do anything!
        }
    };
于 2017-09-14T05:43:03.793 回答