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.

¿Fue útil?

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.

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