Dúvida ocultar coluna em jTable pelo jCheckBox

Boa noite rapaziada preciso de uma ajuda de vocês.
O problema é estou tentando ocultar uma coluna e fazer essa mesma coluna aparecer tudo em tempo de execução e com os dados intactos. Antes de mais nada estou usando esses códigos:
Para ocultar:tabelaPrincipal.removeColumn(tabelaPrincipal.getColumn(3));Para mostrar:

tabelaPrincipal.getColumnModel().addColumn(tabelaPrincipal.getColumnModel().getColumn(3));Se estiver errado me corrijam não estou certo se o código que eu uso para mostrar realmente traz a coluna 3 de volta.

Mas para ocultar e mostrar a coluna têm algumas condições e eu nunca fiz algo parecido então vou tentar explicar mostrando os códigos gerados automaticamente pelo netbeans. Exemplo:
Eu fiz uma jCheckBox em uma janela com o nome janela2 esse evento fica no código:private void jCheckBox4ActionPerformed(java.awt.event.ActionEvent evt) { A tabela que estou tentado manipular está na janela1 e têm o nome de tabelaPrincipal o código foi gerado automáticamente pelo swing.
Dúvida como eu faço para ocultar e mostar a coluna marcando e desmarcado o checkbox que está em uma janela diferente?
OBS: para cada linha da tabela eu guardo um objeto diferente.

Para você manipular a tabela em outra frame, você vai ter que ter uma instancia desse frame. Não sei se consegui explica direito, mas recomendo se da uma olhada no padrão Observer, em que toda a vez que o checkbox for acionado, ele notificará todos os seus observadores, e cada observador realiza uma função diferente, assim você pode usar esse checkbox para outras tabelas/frames sem problema.

Bom com relação a instância eu decidi fazer dois métodos um que oculta e o outro que mostra na janela1 e depois vou criar uma instância na janela2 para chamar o método dentro de um if/else para o checkbox marcado e desmarcado. Até aí tudo certo o problema vêm agora, eu preciso ocultar e mostrar a coluna em tempo de execução então eu fiz o código separado em um pacote de testes:

private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt) { if (jCheckBox1.isSelected()) { System.out.println("selecionada"); jTable1.getColumnModel().removeColumn(jTable1.getColumnModel().getColumn(2)); } else { System.out.println("desmarcada"); jTable1.getColumnModel().addColumn(jTable1.getColumnModel().getColumn(2)); // o problema está nessa linha } }OBS: A tabela foi feita em swing;
Com esse código eu consigo ocultar a coluna mas não sei se o conteúdo é mantido com esse método removeColumn.
Então eu pergunto removeColumn apaga o conteúdo? E como eu faço para trazer a coluna de volta após usar esse método?