Как растянуть столбец по содержимому в jtable?

Пользователь

от roxanne.hauck , в категории: Java , 8 месяцев назад

Как растянуть столбец по содержимому в jtable?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от pauline , 6 месяцев назад

@roxanne.hauck 

Вы можете растянуть столбец в JTable по содержимому, используя метод setAutoResizeMode() и передав ему константу JTable.AUTO_RESIZE_OFF. Это позволит отключить автоматическое изменение размеров столбцов.


Затем вы можете использовать метод getColumnModel().getColumn(index).setPreferredWidth(width) для установки предпочтительной ширины столбца index, где width - это значение, равное максимальной ширине содержимого столбца.


Например, если вы хотите растянуть первый столбец в JTable по содержимому, вы можете использовать следующий код:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
TableColumn column = table.getColumnModel().getColumn(0);
int preferredWidth = 0;
for (int row = 0; row < table.getRowCount(); row++) {
    TableCellRenderer cellRenderer = table.getCellRenderer(row, 0);
    Component c = table.prepareRenderer(cellRenderer, row, 0);
    int width = c.getPreferredSize().width + table.getIntercellSpacing().width;
    preferredWidth = Math.max(preferredWidth, width);
}
column.setPreferredWidth(preferredWidth);


Этот код находит максимальную ширину содержимого первого столбца и устанавливает ее в качестве предпочтительной ширины столбца. Теперь первый столбец должен быть растянут по содержимому.