如何调整 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 行数据或更改单元格中的数据时,可以动态调用代码。