La documentación de GWT recommends utilizando un FlowPanel (flotante: conjunto izquierdo en sus elementos secundarios) como reemplazo del HorizontalPanel para los componentes de diseño. pero como hacer esto?GWT: cómo distribuir componentes horizontalmente en un FlowPanel?
10
A
Respuesta
16
lo dice la derecha en la documentación:
ya utilizar el float: left; Propiedad de CSS en sus hijos.
Cómo establecer un estilo de widget de GWT:
widget.getElement().getStyle().setProperty("float", "left");
4
evitar el uso de HorizontalPanel
utilizo el siguiente código donde sea posible:
FlowPanel panel = new FlowPanel() {
@Override
public void add(Widget child) {
super.add(child);
child.getElement().getStyle().setDisplay(Display.INLINE_BLOCK);
}
};
Y utilizando un UiBinder que hago algo así como:
<ui:UiBinder ...>
<ui:style>
.vertical > * {
display: inline-block;
}
</ui:style>
<g:FlowPanel styleName="{style.vertical}">
...
</g:FlowPanel>
</ui:UiBinder>
O puede sustituir todas las referencias HorizontalPanel
por esta clase HorizontalFlowPanel
:
public class HorizontalFlowPanel extends FlowPanel {
private static final String BASIC_CLASS_NAME = "___" + Math.abs(Random.nextInt());
private static final String HORIZONTAL_CLASS_NAME = BASIC_CLASS_NAME + "_H_";
private static final String VERTICAL_CLASS_NAME = BASIC_CLASS_NAME + "_V_";
static {
newCssClass(HORIZONTAL_CLASS_NAME + " > *", "display: inline-block; vertical-align: top;");
newCssClass(VERTICAL_CLASS_NAME + " > *", "display: block;");
}
private static int count = 0;
private final String myClassName = BASIC_CLASS_NAME + count++;
public HorizontalFlowPanel() {
super();
setStylePrimaryName(HORIZONTAL_CLASS_NAME + " " + myClassName);
}
public void setSpacing(int spacing) {
newCssClass(myClassName + " > *", "margin-bottom: " + spacing + "px; margin-right: " + spacing + "px;");
}
public void setPadding(int padding) {
newCssClass(myClassName, "padding: " + padding + "px;");
}
public static void newCssClass(String className, String content) {
StringBuilder builder = new StringBuilder();
builder.append("." + className + " { " + content + " }\n");
Element style = DOM.createElement("style");
style.setAttribute("type", "text/css");
style.setInnerHTML(builder.toString());
Document.get().getHead().appendChild(style);
}
}
Cuestiones relacionadas
- 1. FlowPanel frente a HTMLPanel en GWT UiBinder
- 2. GWT: ¿Cuál es la forma de manejar Haga clic en GWT FlowPanel
- 3. ¿Cómo puedo reemplazar un widget de GWT en un panel?
- 4. Cómo recuperar imágenes en GWT?
- 5. GWT Temas y bibliotecas de componentes
- 6. ¿Cómo centrar un iframe horizontalmente?
- 7. Configuración de una identificación del widget GWT
- 8. La validación de componentes GWT lleva una eternidad
- 9. ¿Cómo enfocar el elemento en GWT?
- 10. ¿Cómo distribuir módulos kernel usando un RPM?
- 11. Cómo recuperar el elemento objetivo "real" de un evento en GWT
- 12. Estirar un lienzo WPF horizontalmente
- 13. ¿Distribuir Scala sobre un clúster?
- 14. Alinear elementos HTML horizontalmente en un div
- 15. ¿Cómo obtengo un ListBox horizontal para desplazarme horizontalmente en WP7?
- 16. ¿Cómo colocar tres divs en html horizontalmente?
- 17. ¿Cómo distribuir el código reutilizable de Android en un paquete?
- 18. ¿Puede NuGet distribuir un dll COM?
- 19. Cómo obtener un div anidado en GWT
- 20. Cómo centrar una aplicación gwt en el medio de la página
- 21. cómo ClientBundle en GWT?
- 22. ¿Cómo agregar múltiples componentes a un JFrame?
- 23. distribuir programas escritos en Python
- 24. Colocación horizontal de los componentes en JSF
- 25. Distribuir programas Python
- 26. ¿Puedo distribuir un JDK con mi aplicación?
- 27. ¿Cómo distribuir un Mac OS X con bibliotecas dependientes?
- 28. ¿Buenas soluciones para distribuir un Eclipse preconfigurado?
- 29. Usando Erlang, ¿cómo debo distribuir la carga entre un clúster?
- 30. horizontalmente una UL dentro de un DIV
uso preferible 'widget.getElement() getStyle() setFloat (Float.LEFT);' –
¿No puedo utilizar una clase CSS para.. ¿ese? – helpermethod
Puedes absolutamente. Esta era solo la forma en línea de hacerlo por objeto. 'widget.setStyleName (" cssClass ");' – stan229