@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); |
Этот код находит максимальную ширину содержимого первого столбца и устанавливает ее в качестве предпочтительной ширины столбца. Теперь первый столбец должен быть растянут по содержимому.
@roxanne.hauck
Дополнительно, если вы хотите растянуть все столбцы в JTable по содержимому, вы можете использовать цикл для перебора всех столбцов. Например:
1 2 3 4 5 6 7 8 9 10 11 12 |
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
for (int columnIndex = 0; columnIndex < table.getColumnCount(); columnIndex++) {
TableColumn column = table.getColumnModel().getColumn(columnIndex);
int preferredWidth = 0;
for (int rowIndex = 0; rowIndex < table.getRowCount(); rowIndex++) {
TableCellRenderer cellRenderer = table.getCellRenderer(rowIndex, columnIndex);
Component c = table.prepareRenderer(cellRenderer, rowIndex, columnIndex);
int width = c.getPreferredSize().width + table.getIntercellSpacing().width;
preferredWidth = Math.max(preferredWidth, width);
}
column.setPreferredWidth(preferredWidth);
}
|
Этот код будет перебирать все столбцы в таблице и устанавливать их предпочтительную ширину в соответствии с содержимым каждого столбца. Теперь все столбцы будут растянуты по содержимому.