Dúvida na jTable

Aí vai o problema.

Tenho um botão que faz com que uma coluna da jTable desapareça.

jTable1.getColumnModel().getColumn(1).setMinWidth(0); jTable1.getColumnModel().getColumn(1).setMaxWidth(0);

E o outro que faz reaparecer.

jTable1.getColumnModel().getColumn(1).setMinWidth(100); jTable1.getColumnModel().getColumn(1).setMaxWidth(1000);

O problema é, que para reaparecer a coluna eu tenho que apertar o botão duas vezes.

Por que será que não funciona se eu apertar o botão apenas uma vez? Alguém sabe?

Boa noite Ziguifrid.

Utilize o método pack() para redesenhar o JFrame, assim;

  jTable1.getColumnModel().getColumn(1).setMinWidth(0);   
  jTable1.getColumnModel().getColumn(1).setMaxWidth(0); 
  this.pack();
  jTable1.getColumnModel().getColumn(1).setMinWidth(100);   
  jTable1.getColumnModel().getColumn(1).setMaxWidth(1000);
  this.pack();

Boa noite discorpio.

Não deu certo também, coloquei o this.pack() e continuo tendo que apertar duas vezes o botão para a coluna reaparecer.

Um jeito que deu certo é repetir os comandos assim.

jTable1.getColumnModel().getColumn(1).setMinWidth(100); jTable1.getColumnModel().getColumn(1).setMaxWidth(1000); jTable1.getColumnModel().getColumn(1).setMinWidth(100); jTable1.getColumnModel().getColumn(1).setMaxWidth(1000);

Deve ter um jeito certo de fazer, mas não sei como.

Boa noite Ziguifrid.

Talvez não esteja funcionando porque voce tem que desabilitar o AUTO_SIZE do seu JTable no momento de sua instanciação, assim:


....
JTable jTable1 = new JTable().setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

// ou 

JTable jTable1 = new JTable();
jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

...

Neste caso, tente não utilizar o “this.pack()”, talvez ele redimensione sem precisar repintar o JFrame.

É, não funcionou também.