关于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);
} 展开
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);
} 展开
1个回答
展开全部
public void setColumnSize(int i, int width ) {
TableColumnModel cm = table.getColumnModel(); //表格的列模型
TableColumn column = cm.getColumn(i);//得到第i个列对象
column.setPreferredWidth(width);//将此列的首选宽度设置为 preferredWidth。
//如果 preferredWidth 超出最小或最大宽度,则将其调整为合适的界限值。
}
TableColumnModel cm = table.getColumnModel(); //表格的列模型
TableColumn column = cm.getColumn(i);//得到第i个列对象
column.setPreferredWidth(width);//将此列的首选宽度设置为 preferredWidth。
//如果 preferredWidth 超出最小或最大宽度,则将其调整为合适的界限值。
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询