Centrar un diseño de caja después de eliminar componentes

Tengo un programa que crea JButtons que luego se agregan a un JPanel con un BoxLayout que está configurado para colocarlos verticalmente. Ocasionalmente, el primer botón se elimina intencionalmente del JPanel. Inicialmente, los botones están centrados correctamente y los botones también se eliminan correctamente. El problema es que los botones restantes se separan para llenar el espacio. Esto no es lo que me gustaría, en cambio, me gustaría que se vuelvan a centrar a lo largo del eje y sin separarse.

Tengo una clase que extiende JPanel. En el constructor se crea BoxLayout.

setPreferredSize(new Dimension(150, 500));
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
setAlignmentY(CENTER_ALIGNMENT);

Crear los botones es actualmente un método en esta clase:

createButtons(int numButtons){
for (int i=0;i<numButtons;i++) {
    add(new JButton());
}

Y la eliminación es otro método:

removeButton(){
    if(getComponentCount()>1){
        remove(0);
        validate();
        repaint();
    }
}

¿Alguien sabe cómo hacer que los botones permanezcan centrados a lo largo del eje y sin separarse para llenar el panel contenedor?

Respuesta 1

Quiero saber qué es la complejidad de bits y el tiempo del operador en Java y cómo reducirla utilizando métodos alternativos, si los hay. ¡¡Gracias por adelantado!!

Tengo un procedimiento en T-SQL desde aquí que funciona perfectamente cuando lo ejecuto en SMSS. Por ejemplo, tengo una tabla de animales, y si quiero buscar todas las columnas que tengan la palabra "gato", ...

Tengo que desarrollar una aplicación de Android simple usando la API de Cordova (PhoneGap) y requiere Android 4.0.3 o versiones superiores (API Nivel 15 o superior) para construir la aplicación en el emulador correctamente. Pero cuando yo ...

Agregué este token de línea desde aquí map doc y no está compilando mapFragment = (SupportMapFragment) getFragmentManager (). FindFragmentById (R.id.supportmapfragmentj); no puedo emitir ...