Home / Programmazione / Java / Autoresize delle colonne in JTable
Mattepuffo

Autoresize delle colonne in JTable

Autoresize delle colonne in JTable

Quando la JTable viene "disegnata", non sa a priori di che lunghezza sono i dati delle varie colonne.

Quindi imposta una dimensione di default per tutte.

Oppure si prende quelle che gli abbiamo impostato noi da codice.

Se invece volessimo fare in modo che si auto-ridimensionino?

Potete usare questo metodo:

    private void resizeColumnWidth() {
        final TableColumnModel columnModel = table.getColumnModel();
        for (int column = 0; column < table.getColumnCount(); column++) {
            int width = 50;
            for (int row = 0; row < table.getRowCount(); row++) {
                TableCellRenderer renderer = table.getCellRenderer(row, column);
                Component comp = table.prepareRenderer(renderer, row, column);
                width = Math.max(comp.getPreferredSize().width + 1, width);
            }
            columnModel.getColumn(column).setPreferredWidth(width);
        }
    }

Partendo da una larghezza "preferenziale", itera su tutte le colonne e righe, e imposta la dimensione.

Fate qualche cambiamento per vedere le differenze di comportamento.

Enjoy!