2016-05-20 5 views
0

Ich habe angefangen, eine kleine Suchmaschine für einen Index zu erstellen, den ich mit Lucene erstellt habe. Ich verwende das GWT, um die GUI zu erstellen, die ich mag, aber ich stecke in einem Problem fest. Ich versuche, einige Ergebnisse in einem FlowPanel hinzuzufügen, das sich in der Mitte eines DockLayoutPanels befindet, damit ich die Seite beliebig scrollen kann. Mein Problem ist (wie ich herausgefunden habe), dass, damit das Scrollen funktioniert (und das Browserfenster meine Ergebnisse nicht schneidet), jedes DockLayoutPanel-Kind keine Position: absolut haben muss. Mein Problem ist, dass ich es nicht entfernen kann (oder ich weiß nicht wie). Wenn ich es vom Chrome Inspector Scrolling aus deaktiviere, schneidet es das flowPanel, wenn ich es wieder aktiviere. Hier ist der Java-Code:SetStyleName zu gwt dockLayoutPanel Kind

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

am Anfang meines Codes ich das Dock (DockLayoutPanel) zu meinem RootLayoutPanel hinzufügen.

enter image description here

als ich auf dem ersten Bild zeigen ... mit Position auf absolute gesetzt kann ich die Scrollbar haben und die Ergebnisse geschnitten werden, aber wenn ich Stellung zu deaktivieren: absolute, wie im zweiten Bild gezeigt

enter image description here

Die Bildlaufleiste ist aktiviert und ich kann vollen Zugriff auf alle meine Ergebnisse haben.

Das Scrollbar wie folgt festgelegt:

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

Was ich versuche Position des für jeden dockLayoutPanel Kind zu tun, entfernen oder es etwas anderes, das schafft mir kein Problem eingestellt.

Antwort

0

Ich fand eine Lösung. Auf CSS Styling einfach hatte ich

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

zu schreiben Wenn jemand einen besseren Weg vorzuschlagen hat als !important verwenden ich es hören würde mich freuen.