关于JAVA中的JTable列宽调整问题

我想设置JTable的列宽如下:每列显示自己的最大列宽,超出时显示水平滚动栏。代码如下(但没有效果,每列都一样宽)publicstaticvoidSetColumnWid... 我想设置JTable的列宽如下:每列显示自己的最大列宽,超出时显示水平滚动栏。代码如下(但没有效果,每列都一样宽)

public static void SetColumnWidth(JTable table) {
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); //关闭列宽自动调整,当列宽超过窗口宽度时,显示水平滚动栏
readElementCount = 0;
columnCount = table.getColumnCount();
JTableHeader header = table.getTableHeader();
int rowCount = table.getRowCount();
Enumeration columns = table.getColumnModel().getColumns();
while (columns.hasMoreElements()) {
readElementCount++;
TableColumn column = (TableColumn) columns.nextElement();
int col = header.getColumnModel().getColumnIndex(column.getIdentifier());
int width = (int) table.getTableHeader().getDefaultRenderer().getTableCellRendererComponent(table,column.getIdentifier(),
false, false, -1, col).getPreferredSize().getWidth();
for (int row = 0; row < rowCount; row++) {
int preferedWidth = (int) table.getCellRenderer(row, col)
.getTableCellRendererComponent(table,
table.getValueAt(row, col), false, false, row,col).getPreferredSize().getWidth();
width = Math.max(width, preferedWidth);
}
header.setResizingColumn(column);
column.setWidth(width + table.getIntercellSpacing().width);
}
}
public boolean hasMoreElements() {
return readElementCount < columnCount;
}

public Object nextElement() {
return table.getColumnModel().getColumn(readElementCount - 1);
}
展开
 我来答
aimilin6688
推荐于2016-10-24 · TA获得超过1266个赞
知道小有建树答主
回答量:809
采纳率:0%
帮助的人:598万
展开全部
public void setColumnSize(int i, int width ) {
TableColumnModel cm = table.getColumnModel(); //表格的列模型
TableColumn column = cm.getColumn(i);//得到第i个列对象
column.setPreferredWidth(width);//将此列的首选宽度设置为 preferredWidth。
//如果 preferredWidth 超出最小或最大宽度,则将其调整为合适的界限值。
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式