【发布时间】:2017-06-30 21:46:31
【问题描述】:
我创建了一个有 0 行和 0 列的 jTable,因为内容(包括标题名称)将根据按钮动态添加。我正在使用TableCellrenderer 来调整列的大小。在我的代码中,所有列仅根据标题值进行排列,此外,如果所有列宽的总和小于 jTable 宽度的总和,它应该覆盖整个表格。我不知道该怎么做,也不知道我的代码有什么问题。提前致谢
public void tableresize(JTable table)
{
for(int i=0;i<table.getColumnCount();i++)
{
DefaultTableColumnModel colModel = (DefaultTableColumnModel) table.getColumnModel();
TableColumn col = colModel.getColumn(i);
int width = 0;
TableCellRenderer renderer = col.getHeaderRenderer();
if (renderer == null)
{
renderer = table.getTableHeader().getDefaultRenderer();
}
Component comp = renderer.getTableCellRendererComponent(table, col.getHeaderValue(), false, false, 0, i);
if(table.getRowCount()>0)
{
for(int r=0;r<table.getRowCount();r++)
{
renderer=table.getCellRenderer(r,i);
Component comp1=renderer.getTableCellRendererComponent(table,table.getValueAt(r, i),false,false, r, i);
if(comp.getPreferredSize().width<comp1.getPreferredSize().width)
{
width=comp1.getPreferredSize().width;
}
else
{
width=comp.getPreferredSize().width;
}
}
}
else
{
width=comp.getPreferredSize().width;
}
col.setPreferredWidth(width+4);
}
}
【问题讨论】: