Frage

würde ich ein Panel in GWT wie die Seite zu füllen, ohne tatsächlich die Größe einstellen zu müssen. Gibt es eine Möglichkeit, dies zu tun? Zur Zeit habe ich die folgenden:

public class Main  implements EntryPoint
{
    public void onModuleLoad()
    {
        HorizontalSplitPanel split = new HorizontalSplitPanel();
        //split.setSize("250px", "500px");
        split.setSplitPosition("30%");

        DecoratorPanel dp = new DecoratorPanel();
        dp.setWidget(split);

        RootPanel.get().add(dp);
    }

}

Mit dem vorherigen Code-Schnipsel, nichts erscheint. Gibt es eine Methode Aufruf mir fehlt?

Danke.


UPDATE 17. September '08 um 20:15 Uhr

ich einige Tasten setzen (Set explizit ihre Größe) auf jeder Seite, und dass immer noch nicht funktioniert. Ich bin wirklich überrascht, dass es keine FillLayout Klasse oder die Nummer eines setFillLayout Methode oder setDockStyle (DockStyle.Fill) oder so ähnlich. Vielleicht ist es nicht möglich? Aber für so populär wie GWT ist, würde ich denken, dass es möglich wäre.

UPDATE 18. September '08 um 14:38 Uhr

Ich habe versucht, die RootPanel Breite und Höhe auf 100% und das immer noch nicht funktioniert. obwohl Danke für die Anregung, die wie es schien, vielleicht funktionieren würde. Alle anderen Vorschläge ??

War es hilfreich?

Lösung

Google hat den Hauptteil Ihrer Frage in einem ihrer FAQs beantwortet: http://code.google.com/webtoolkit/doc/1.6/ FAQ_UI.html # How_do_I_create_an_app_that_fills_the_page_vertically_when_the_b

Der wichtigste Punkt ist, dass Sie nicht Höhe auf 100% gesetzt, können Sie etwas tun müssen:

final VerticalPanel vp = new VerticalPanel();
vp.add(mainPanel);
vp.setWidth("100%");
vp.setHeight(Window.getClientHeight() + "px");
Window.addResizeHandler(new ResizeHandler() {

  public void onResize(ResizeEvent event) {
    int height = event.getHeight();
    vp.setHeight(height + "px");
  }
});
RootPanel.get().add(vp);

Andere Tipps

Ben Antwort ist sehr gut, aber auch nicht mehr aktuell. Ein Resize-Handler war notwendig, in GWT 1.6, aber wir sind auf 2.4 jetzt. Sie können eine DockLayoutPanel vertikal Ihre Inhalte füllen die Seite zu haben. Sehen Sie die Probe Mail app , die dieses Panel verwendet wird.

Ich denke, Sie brauchen, um etwas auf der linken Seite und / oder rechts vom Split (split.setLeftWidget (Widget), split.setRightWidget (Widget) OR split.add (Widget) zu setzen, die zuerst auf die hinzufügen werden nach links, dann nach rechts), um alles zu zeigen.

Versuchen Sie, die Breite und / oder Höhe der rootpanel auf 100%, bevor Ihr Widget hinzufügen.

Panels automatisch auf die kleinste sichtbare Breite ändern. So müssen Sie jedes Feld, das Sie auf die RootPanel zu 100% einschließlich Ihrer SplitPanel hinzufügen ändern. Die RootPanel selbst keine Änderungen der Größe benötigen. Also versuchen Sie:

split.setWidth("100%");
split.setHeight("100%");

Die Dokumentation für DecoratorPanel sagt:

  

Wenn Sie die Breite oder Höhe des DecoratorPanel eingestellt haben, müssen Sie die Höhe und Breite der Zelle Middle auf 100% gesetzt, so dass die Zelle Middle alle verfügbaren Platz in Anspruch nimmt. Wenn Sie nicht über die Breite und Höhe des DecoratorPanel gesetzt ist, wird es seinen Inhalt fest umwickeln.

Das Problem ist, dass DecoratorPanel Middle Zelle auf Ihre Inhalte als Standard fest füllen, und SplitPanel „100%“ Artgröße Einstellung nicht gestattet. Zu tun, was Sie wollen, setzen Sie den Stil der Tabelle entsprechend, auf CSS:

.gwt-DecoratorPanel .middleCenter {    Höhe: 100%;    Breite: 100%;  }

Für mich ist es nicht funktioniert, wenn ich gesetzt nur die Breite wie

  

panel.setWidth ( "100%");

Die Platte ist ein VerticalPanel, dass es bekam nur ein Zufall Größe, dass ich weiß nicht, wo es herkommt. Aber was @ Ben Bederson kommentierte funktionierte sehr gut für mich, nachdem ich die Zeile hinzugefügt:

  

panel.setWidth (Window.getClientWidth () + "px");

Nur diese, sonst nichts. Dank

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top