I am trying to create a JTable that would have a dynamic width (according to the largest element in the column) and I am using this code
JTable table = new JTable(){
    @Override
       public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
           Component component = super.prepareRenderer(renderer, row, column);
           int rendererWidth = component.getPreferredSize().width;
           TableColumn tableColumn = getColumnModel().getColumn(column);
           tableColumn.setPreferredWidth(Math.max(rendererWidth + getIntercellSpacing().width, tableColumn.getPreferredWidth()));
           return component;
        }
    };
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
The dynamic width is working correctly, but then I have an event listener to chechboxes (1 chechbox = 1 column) and if they are unticked, the column should be hidden, if they are ticked again, the column should re-apear. For that I am using:
if (jCheckBox.isSelected())
{
    table.getColumn(columnName).setMinWidth(15);
    table.getColumn(columnName).setMaxWidth(2147483647);
    table.getColumn(columnName).setWidth(100);
}
else
{
    table.getColumn(columnName).setMinWidth(0);
    table.getColumn(columnName).setMaxWidth(0);
    table.getColumn(columnName).setWidth(0);
}
And this piece of code was working perfectly, but I think this line:
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
breaks the functionality, now, hiding the column works, but re-appearing does not. Do you know what could be the problem? Thanks!