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.