@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); } |
Этот код будет перебирать все столбцы в таблице и устанавливать их предпочтительную ширину в соответствии с содержимым каждого столбца. Теперь все столбцы будут растянуты по содержимому.