java - google - ¿Crear un panel fluido en GWT para llenar la página?
gwt java tutorial (8)
Creo que tendrá que 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 todo se muestre.
Me gustaría que un panel en GWT llene 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. ¿Hay alguna llamada al método que me falta?
Gracias.
ACTUALIZACIÓN el 17 de septiembre a las 20:15
Puse algunos botones (establecer explícitamente su tamaño) en cada lado y eso todavía no funciona. Estoy realmente sorprendido de que no haya una clase FillLayout o un método setFillLayout o setDockStyle (DockStyle.Fill) o algo así. Tal vez no es posible? Pero por más popular que sea GWT, creo que sería posible.
ACTUALIZACIÓN 18 de septiembre a las 14:38
Intenté configurar el ancho y la altura del RootPanel al 100% y aún no funcionaba. Gracias por la sugerencia, parecía que iba a funcionar. ¿¿Cualquier otra sugerencia??
Intente establecer el ancho y / o alto del panel raíz al 100% antes de agregar su widget.
Los paneles cambian de tamaño automáticamente 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. El RootPanel en sí no necesita redimensionamiento. Así que prueba:
split.setWidth("100%");
split.setHeight("100%");
La documentación para DecoratorPanel dice:
Si establece el ancho o la altura del DecoratorPanel, debe establecer el alto y el ancho de la celda de middleCenter al 100%, de modo que la celda de middleCenter ocupe todo el espacio disponible. Si no establece el ancho y alto del DecoratorPanel, envolverá su contenido con fuerza.
El problema es que la celda DecoratorPanel middleCenter se llenará estrictamente de contenido, y SplitPanel no permite la configuración de tamaño de estilo "100%". Para hacer lo que quiera, establezca el estilo de la tabla de manera apropiada en su CSS:
.gwt-DecoratorPanel .middleCenter {height: 100%; ancho: 100%; }
La respuesta de Ben es muy buena, pero también está desactualizada. Un controlador de cambio de tamaño era necesario en GWT 1.6, pero ahora estamos en 2.4. Puede usar DockLayoutPanel para que su contenido llene la página verticalmente. Consulte la aplicación de correo de muestra , que usa este panel.
Para mí no funciona si solo configuro el ancho como
panel.setWidth ("100%");
El panel es un Panel Vertical que simplemente tiene un tamaño aleatorio que no sé de dónde viene. Pero lo que @Ben Bederson comentó funcionó muy bien para mí después de que agregué la línea:
panel.setWidth (Window.getClientWidth () + "px");
Solo esto, nada más. Gracias
Google ha respondido la parte principal de su 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 puede establecer la altura al 100%, debe 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);