Java 如何调整jTable的大小以适应其内容(包括标题)?

Java 如何调整jTable的大小以适应其内容(包括标题)?,java,swing,resize,jtable,Java,Swing,Resize,Jtable,我创建了一个包含0行0列的jTable,因为内容(包括标题名)将根据按钮动态添加。我正在使用TableCellrenderer调整列的大小。在我的代码中,所有列仅根据标题值排列,而且如果所有列宽之和小于jTable宽度之和,则应覆盖整个表。我不知道怎么做,我的代码有什么问题。提前谢谢 public void tableresize(JTable table) { for(int i=0;i<table.getColumnCount();i++) { DefaultTabl

我创建了一个包含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);      
  }    
}
public void table resize(JTable table)
{
对于(int i=0;i0)
{
对于(int r=0;r
在我的代码中,所有列仅根据标题值排列

我猜只有当行数为0时才调用代码


查看用于计算列宽的类。在添加/删除数据行或更改单元格中的数据时,可以动态调用该代码。

谢谢帮助。它可以工作。但是,如果“我的所有列”的宽度之和小于总宽度,则所有列都排列在一侧(列不会完全覆盖表格)@previn,我从未尝试过,但你可能可以将上面的类与本文中的建议结合起来:我通过使用一些额外的条件得到了上面的类的解决方案。如果总宽度太低,我会启用自动调整所有列的大小。工作得很好。谢谢