Pregunta

Me gustaría que un panel en GWT llenara la página sin tener que establecer el tamaño.¿Hay alguna forma de hacer esto?Actualmente tengo lo siguiente:

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

}

Con el fragmento de código anterior, no aparece nada.¿Me falta alguna llamada a un método?

Gracias.


ACTUALIZACIÓN 17 de septiembre de 2008 a las 20:15

Puse algunos botones (establecí explícitamente su tamaño) en cada lado y eso todavía no funciona.Estoy realmente sorprendido de que no exista una clase FillLayout o un método setFillLayout o setDockStyle(DockStyle.Fill) o algo así.¿Quizás no sea posible?Pero por muy popular que sea GWT, creo que sería posible.

ACTUALIZACIÓN 18 de septiembre de 2008 a las 14:38

Intenté configurar el ancho y alto de RootPanel al 100% y todavía no funcionó.Gracias por la sugerencia, parecía que tal vez iba a funcionar.¿¿Cualquier otra sugerencia??

¿Fue útil?

Solución

Google ha respondido la parte principal de tu pregunta en una de sus preguntas frecuentes: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

El punto principal es que no puedes establecer la altura al 100%, debes hacer algo como esto:

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

Otros consejos

La respuesta de Ben es muy buena, pero también está desactualizada.Era necesario un controlador de cambio de tamaño en GWT 1.6, pero ahora estamos en 2.4.Puedes usar un Panel De Diseño Del Muelle para que su contenido llene la página verticalmente.Ver el aplicación de correo de muestra, que utiliza este panel.

Creo que necesitarás poner algo a la izquierda y/o derecha de la división (split.setLeftWidget(widget), split.setRightWidget(widget) O split.add(widget), que se agregará primero a la izquierda, luego a la derecha) para que aparezca cualquier cosa.

Intente configurar el ancho y/o alto del panel raíz al 100% antes de agregar su widget.

Los paneles cambian automáticamente de tamaño al ancho visible más pequeño.Por lo tanto, debe cambiar el tamaño de cada panel que agregue al RootPanel al 100%, incluido su SplitPanel.No es necesario cambiar el tamaño del RootPanel en sí.Entonces prueba:

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

La documentación para Panel decorador dice:

Si establece el ancho o el alto del DecoratorPanel, debe establecer el alto y el ancho de la celda middleCenter en 100% para que la celda middleCenter ocupe todo el espacio disponible.Si no establece el ancho y el alto del DecoratorPanel, envolverá su contenido herméticamente.

El problema es que la celda central de DecoratorPanel se llenará con su contenido de forma predeterminada, y SplitPanel no permite la configuración de tamaño de estilo "100%".Para hacer lo que quieras, configura el estilo de la tabla apropiadamente en tu CSS:

.GWT-DecoratorPanel .MidDLecenter {altura:100%;ancho:100%;}

Para mí no funciona si solo configuro el ancho como

panel.setWidth("100%");

El panel es un Panel Vertical que acaba de adquirir un tamaño aleatorio que no sé de dónde viene.Pero lo que comentó @Ben Bederson funcionó muy bien para mí después de agregar la línea:

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

Sólo esto, nada más.Gracias

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top