9 楼gtlang78()回复于 2005-07-27 09:43:15 得分
private static void adjustTableColumnWidths(JTable table)
{
JTableHeader header = table.getTableHeader(); //表头
int rowCount = table.getRowCount(); //表格的行数
TableColumnModel cm = table.getColumnModel(); //表格的列模型
for (int i = 0; i < cm.getColumnCount(); i++) { //循环处理每一列
TableColumn column = cm.getColumn(i); //第i个列对象
int width = (int)header.getDefaultRenderer().getTableCellRendererComponent(table, column.getIdentifier(), false, false, -1, i).getPreferredSize().getWidth(); //用表头的绘制器计算第i列表头的宽度
for(int row = 0; row<rowCount; row++){ //循环处理第i列的每一行,用单元格绘制器计算第i列第row行的单元格宽度
int preferedWidth = (int)table.getCellRenderer(row, i).getTableCellRendererComponent(table, table.getValueAt(row, i), false, false, row, i).getPreferredSize().getWidth();
width = Math.max(width, preferedWidth); //取最大的宽度
}
column.setPreferredWidth(width+table.getIntercellSpacing().width); //设置第i列的首选宽度
}
table.doLayout(); //按照刚才设置的宽度重新布局各个列
}
摘自
本文介绍了一种 Java Swing 中 JTable 控件自动调整列宽的方法,通过遍历所有列并计算每列的最大宽度来确保列宽能够适应内容。

2377

被折叠的 条评论
为什么被折叠?



