我已经开始为使用Lucene创建的索引构建一个小型搜索引擎。我使用GWT创建自己喜欢的GUI,但遇到了问题。我正在尝试在DockLayoutPanel中心内部的FlowPanel内添加一些结果,以便可以随意滚动页面。我的问题是(如我所发现的),为了使滚动工作(并且没有使浏览器窗口剪切我的结果),是使每个DockLayoutPanel子级都不具有position:absolute。我的问题是我无法删除它(或者我不知道如何)。当我从chrome inspector禁用它时,滚动工作,但是当我重新启用它时,它会切掉flowPanel。这是Java代码:

public static void loadCellTrees(HashMap<Integer,LinkedHashMap<String,String>> searchResults, List<RootCategories> list)
{
        VerticalPanel westTrees = new VerticalPanel();
        TreeViewModel treeModel = new CellTreeWidget(list);
        CellTree tree = new CellTree(treeModel, null);
        HTMLBuilder builder = new HTMLBuilder(searchResults);

        tree.setStyleName("tree");
        tree.setAnimationEnabled(true);

        dock.clear();
        westTrees.clear();
        westTrees.getElement().setAttribute("align", "center");
        westTrees.add(tree);

        FlowPanel resultsPanel = new FlowPanel();
        resultsPanel.setStyleName("resultsPanel");

        for(int i=0; i<searchResults.size(); i++)
        {
            HTML box = builder.toHTML(i);
            box.setStyleName("resultBox");
            resultsPanel.add(box);
        }

        dock.addWest(westTrees, 20);
        dock.addNorth(RootPanel.get("wrap"),20);

        dock.add(resultsPanel);
}


在代码的开头,将扩展坞(DockLayoutPanel)添加到RootLayoutPanel中。

java - SetStyleName获取dockLayoutPanel子级-LMLPHP

如我在第一张图片上所示...将位置设置为绝对,我可以使用滚动条并剪切结果,但是如果我禁用位置:绝对,如第二张图片所示

java - SetStyleName获取dockLayoutPanel子级-LMLPHP

滚动条已启用,我可以完全访问所有结果。

滚动条设置如下:

RootLayoutPanel.get().getWidgetContainerElement(dock).getStyle().setOverflowY(Overflow.AUTO);


我想做的是删除每个dockLayoutPanel的孩子的位置,或者将其设置为其他不会造成问题的位置。

最佳答案

我找到了解决方案。在CSS样式上,我不得不写

.cw-DockPanel > div {
    position : initial !important;
}


如果有人不得不建议一种比使用!important更好的方法,我将很高兴听到它。

07-26 02:20