我需要我的 JTable 自动调整其列宽以适应内容。我找到了TableColumnAdjuster
课很有用。但是有一个小问题。假设我有 5 列,它们的内容很短。在这种情况下,如果我使用自动调整器,它会根据它们的内容设置前四列的宽度,并将所有剩余空间留给最后一列。请看示例。
这里的最后一列,Balance
被赋予了所有多余的空间。但是,如果我需要将该空间留给中间列之一怎么办。在上述情况下,我需要将该空间分配给第三列 name
。我尝试修改 TableColumnAdjuster
类的 adjustColumns()
方法。但我无法让它工作。
我尝试了 column.setPreferredWidth()
和 column.setWidth()
来更改列大小。但似乎并没有改变什么。如何有效地更改 JTable
的列大小。如果我的主要问题有其他选择或直接答案,那就更好了。谢谢!
最佳答案
你可以试试下一个:
public void resizeColumnWidth(JTable table) {
final TableColumnModel columnModel = table.getColumnModel();
for (int column = 0; column < table.getColumnCount(); column++) {
int width = 15; // 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);
}
if(width > 300)
width=300;
columnModel.getColumn(column).setPreferredWidth(width);
}
}
这需要在resize方法之前执行。
如果你有:
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
关于java - 自动调整 JTable 列宽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17627431/