Java 如何调整jTable的大小以适应其内容(包括标题)?
我创建了一个包含0行0列的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
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,我从未尝试过,但你可能可以将上面的类与本文中的建议结合起来:我通过使用一些额外的条件得到了上面的类的解决方案。如果总宽度太低,我会启用自动调整所有列的大小。工作得很好。谢谢