JTable Mostrar/Ocultar Columnas

Que tal comunidad, una vez más yo con una pregunta sobre SWING, ésta vez es con los JTable. Estuve leyendo sobre qué modelo usar y al final utilicé la AbstractTableModel (heredada por una clase). En mi aplicación quiero tener checkboxes, donde el usuario pueda seleccionar las columnas que quiera que se visualicen. Creí que tendría una opción (IsVisible), pero al parecer no, así que una forma de hacerlo fue "desapareciendo" las columnas de la siguiente manera:

public void ocultarColumnas(final JTable myTable, final int[] myColumns) {
        try {
             for (int i : myColumns) {
                  myTable.getColumn(myTable.getColumnName(i)).setWidth(0);
                  myTable.getColumn(myTable.getColumnName(i)).setMinWidth(0);
                  myTable.getColumn(myTable.getColumnName(i)).setMaxWidth(0);
             }
        } catch (ArrayIndexOutOfBoundsException e) {
                  // Aquí es donde deja de existir la humanidad como la conocemos ahora.
        }
                  fireTableDataChanged(); // Para avisarle al JTable que se ha actualizado (Columnas, filas, etc).
        }

Bien, funciona... pero... ¿y ahora para volver a visualizarla? "Fácil", me dije a mi mismo e hice el código "al revés", cambiando:

                  myTable.getColumn(myTable.getColumnName(i)).setWidth(150);
                  myTable.getColumn(myTable.getColumnName(i)).setMinWidth(150);
                  myTable.getColumn(myTable.getColumnName(i)).setMaxWidth(200);

Pero, no funciona... no si no hasta hacerlo una segunda vez. Es decir, si doy click a mi botón una vez, nada, si le doy una seunda vez, se visualizan.

¿Alguien sabe porqué me sucede eso? Igual, si alguien sabe un método mejor para hacer lo que quiero, le agradecería me dijera y le acepto con gusto el jalón de orejas.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

JTable Mostrar/Ocultar Columnas

La forma correcta es usando…

jTable.removeColumn(ListadoTable.getColumnModel().getColumn(1));

ya que con el width solo la hacemos más pequeña y puede visualizarse si hacemos un resize de una columna adjunta.

Esto no hace que se pierda su valor de columna.

Saludos