如何调整 jTable 的大小以适应它们的内容,包括它的 header?
How to resize jTable to fit their contents including its header?
我创建了一个包含 0 行 0 列的 jTable
,因为内容(包括 header 名称)将根据按钮动态添加。我正在使用 TableCellrenderer
来调整列的大小。在我的代码中,所有列仅根据 header 值排列,而且如果所有列宽的总和小于 jTable
宽度,它应该覆盖整个 table .我不知道该怎么做以及我的代码中有什么问题。提前致谢
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);
}
}
In my code all the columns are arranging only based on header values
好吧,我猜你只会在行数为 0 时调用你的代码。
查看 Table Column Adjuster 中的 class 以计算列宽。当您 add/remove 行数据或更改单元格中的数据时,可以动态调用代码。
我创建了一个包含 0 行 0 列的 jTable
,因为内容(包括 header 名称)将根据按钮动态添加。我正在使用 TableCellrenderer
来调整列的大小。在我的代码中,所有列仅根据 header 值排列,而且如果所有列宽的总和小于 jTable
宽度,它应该覆盖整个 table .我不知道该怎么做以及我的代码中有什么问题。提前致谢
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);
}
}
In my code all the columns are arranging only based on header values
好吧,我猜你只会在行数为 0 时调用你的代码。
查看 Table Column Adjuster 中的 class 以计算列宽。当您 add/remove 行数据或更改单元格中的数据时,可以动态调用代码。