java cuadrícula de la bolsa de diseño:evitar el centro de la alineación
-
21-09-2019 - |
Pregunta
En mi aplicación de interfaz de usuario, tengo varios JPanels que se crean instancias en varios puntos durante la ejecución de mi programa, y que ciertas acciones hará que uno de ellos se muestran en un panel de desplazamiento:
mViewport.setViewportView(currentPanel);
El problema es que mi paneles se realiza a través de la Cuadrícula de la Bolsa de Diseños, y el comportamiento de los que es el centro de sí mismo, dentro de la JScrollPane es en el interior de.Esto hace que la interfaz gráfica de usuario parezca extraña.
Alguien sabe de una manera de forzar una bolsa de rejilla de panel de diseño arriba-alinear a la izquierda?
Gracias!
EDITAR
Tenga en cuenta que aquí estoy preguntando acerca de la alineación de todo el panel, dentro de su panel de desplazamiento, no se trata de los componentes dentro del panel.
Solución 2
He encontrado una solución a mi propia pregunta después de algún trasteo:
Ajuste de los pesos que parece ser capaz de afectar a la alineación de los componentes dentro de la JPanel
para que el GridBagLayout
fue utilizado.Sin embargo, no tienen un efecto sobre la alineación de la JPanel
dentro de la JScrollPane
.
Me pareció un lugar simple solución, que es no poner el JPanel
directamente en el interior de la JScrollPane
, como yo lo estaba haciendo con mi código anterior:
if (currentPanel != mCurrentPanel)
{
mViewport.setViewportView(currentPanel);
}
...pero en lugar de poner un "exterior" JPanel
dentro de la JScrollPane
, y establece que el uso de una FlowLayout
.Luego, cuando quiero cambiar de paneles, puedo quitar la vieja y coloque el panel en el "exterior" del panel.
if (currentPanel != mCurrentPanel)
{
if (mCurrentPanel != null)
{
mOuterPanel.remove(mCurrentPanel);
}
mCurrentPanel = currentPanel;
mOuterPanel.add(mCurrentPanel);
}
Este enfoque funcionó bastante bien, porque eso significaba que yo sólo tenía a efecto de cambios en una clase, en lugar de cada uno de los muchos paneles que yo tenía.
Otros consejos
Será necesario establecer los pesos (en el GridBagConstraints
) en uno o más de los componentes dentro de su panel.Esto tiene el efecto de "empujar" los componentes para tomar más el espacio disponible (sin pesas, los componentes de tomar solamente lo que necesitan, y el panel se centrará en el espacio disponible).
Si usted quería alinear los componentes en la parte superior izquierda del panel de desplazamiento, coloque la parte inferior del componente y el peso de 1.0, y establece el derecho-la mayoría de la componente x del peso a 1.0.