我正在尝试根据列标题和列宽调整列的大小。
我在这方面取得了一些成功,但这实际上只是一个临时解决方案。
我设置的最小宽度仅适用于一个表格,但是我正在预览许多具有不同列标题的表格,所以有时这个最小宽度会太小。我想要一种获取最小列标题的列标题宽度并将其分配给此变量的方法。
final TableColumnModel columnModel = table.getColumnModel();
for (int column = 0; column < table.getColumnCount(); column++)
{
int width = 70; // Min width
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);
}
更新:
我已经尝试将 DefaultTableCellRenderer 用于它正在循环的列,然后获取列标题宽度并将其应用于变量,但它带来了这个结果
final TableColumnModel columnModel = table.getColumnModel();
for (int column = 0; column < table.getColumnCount(); column++)
{
DefaultTableCellRenderer colwidth=((DefaultTableCellRenderer)table.getTableHeader().getDefaultRenderer());
int width = colwidth.getWidth();
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);
}