Estoy usando un FlowLayout
JPanel
. El panel se ve feo cuando las alturas de los componentes secundarios son diferentes. Estoy buscando una solución para hacerlos alineados en la parte superior (similar a valign="top"
con celdas de tabla en HTML).alineación superior para FlowLayout
Respuesta
Me di cuenta que pregunta fue hecha hace más de un año, pero como yo, pensé que muchos tropezar con este mensaje del foro y se dejó de intentar hacer una solución como la que se sugiere en el informe de errores (no funcionó para mí solo fyi).
De cualquier manera hay una mejor respuesta desde JDK 1.6. FlowLayout tiene el siguiente método:
public void setAlignOnBaseline(boolean alignOnBaseline)
Si se utiliza este método en su FlowLayout y la ponemos a true, entonces cuando FlowLayout expone los componentes se comprobará la línea de base de cada componente y alinear el componente a lo largo de esta línea de base.
Pero eso no es todo lo que tiene que hacer.
El componente en cuestión deben prevalecer sobre los dos métodos siguientes de esta manera:
@Override
public Component.BaselineResizeBehavior getBaselineResizeBehavior() {
return Component.BaselineResizeBehavior.CONSTANT_ASCENT;
}
@Override
public int getBaseline(int width, int height) {
return 0;
}
Son métodos de JComponent y diseños y layoutmanagers utilizan estos métodos para determinar como se distribuyen los componentes.
Si sigue los pasos mencionados anteriormente, todos los componentes se alinearán a lo largo de la parte superior de cada fila. Por supuesto, si solo quiere usar un componente como JButton, obviamente tendrá que ampliarlo para lograr su objetivo deseado ... pero no es tanto trabajo como reemplazar el diseño de contenedor con una solución que debe depurar. Al menos eso pienso.
Buena suerte, -Asaf
+1. La solución no me funcionó tampoco, pero creo que es porque existe para un propósito diferente. Como se afirma en el informe de error: * "Las tres opciones de alineación vertical serían superior, central e inferior. ** Sería establecer las cosas exactamente de la misma manera, ** pero colocar los componentes en el medio o en la parte inferior de el panel".* – Rempelos
Alguien más ha deseado esto, en forma de un informe de errores (que también enumera una solución alternativa).
Tenga una mirada en
Oh. Creo que seguiré la solución. ¡Gracias! – mrpaint
En realidad, este informe de error tiene un propósito diferente: * "Por favor, agregue una opción al diseño de flujo para permitirme especificar la alineación vertical. Las tres opciones de alineación vertical serían superior, central e inferior. ** Sería establecer las cosas exactamente de la misma manera, ** pero coloque los componentes en el medio o en la parte inferior del panel. "* Por lo tanto, la solución del enlace permite elegir entre tres opciones para la colocación vertical de los componentes (FlowLayout siempre los coloca en la parte superior) pero todavía estarán alineados en el centro entre sí en caso de que tengan diferentes alturas. Solo señalando ... – Rempelos
Usted debe ser capaz de utilizar una BoxLayout. Es compatible con la alineación vertical. El único problema es que debe insertar componentes de puntal horizontal manualmente.
O podría intentar usar el Relative Layout. En su caso se debería utilizar:
RelativeLayout rl = new RelativeLayout(RelativeLayout.X_AXIS, 5);
rl.setBorderGap(5);
rl.setAlignment(RelativeLayout.LEADING);
JPanel panel = new JPanel(rl);
panel.add(...);
Claro que probé la alineación vertical pero no funcionó :( – mrpaint
¿Qué no funciona? Le di dos sugerencias y ambas funcionan. ¿Leyó el tutorial de Swing sobre "Cómo usar el diseño de la caja" "? Si necesita más ayuda, publique su SSCCE: http: // sscce.org – camickr
Finalmente, extendí el FlowLayout para que funcione como yo quiera y ahora es genial: ampliar el ancho: D Muchas gracias – mrpaint
- 1. superior Alineación vertical en CSS
- 2. Java Swing FlowLayout Alignments
- 3. Alineación flotante CSS en la parte superior
- 4. Alineación superior vertical de la celda utilizando poi
- 5. C# WinForms Alineación vertical para TextBox, etc.
- 6. Align controla a centrar en un FlowLayout
- 7. Alineación vertical de etiquetas y TextBlocks en la parte superior en XAML
- 8. PHP alineación central GD ttftext
- 9. Doble alineación
- 10. Javascript scrollIntoView() alineación del medio?
- 11. Alineación vertical incorrecta en IE8
- 12. alineación y relleno para asp: CheckBoxList
- 13. requisitos de alineación para atomic x86 instructions
- 14. ¿Cómo establecer la alineación para funciones virtuales?
- 15. restricciones de alineación para malloc()/free()
- 16. log4j alineación
- 17. Alineación vertical con CSS
- 18. ¿Cómo organizar las etiquetas de una manera flowlayout?
- 19. UICollectionView con FlowLAyout no desplazándose al establecer secciones insertadas
- 20. FlowLayout de Java no cambia el tamaño correctamente
- 21. Android Editar alineación de texto
- 22. ¿Cómo puedo hacer algo como un FlowLayout en Android?
- 23. estableciendo más espacio entre los controles en un flowLayout
- 24. alineación vertical NSTextFieldCell, las soluciones parecen aplastar la alineación horizontal
- 25. Alineación InterlockedExchange y memoria
- 26. Alineación múltiple en TextView?
- 27. CSS: Superior vs Margen superior
- 28. ¿Alineación de imagen en el texto?
- 29. Algoritmo de alineación
- 30. JList texto alineación
¿Ha echado un vistazo a MigLayout? –