0
我創建了一個jTable
,它有0行和0列,因爲內容(包括標題名稱)將根據按鈕動態添加。我正在使用TableCellrenderer
來調整列的大小。在我的代碼中,所有列僅根據標題值排列,而且如果所有列寬度的總和小於jTable
寬度的總和,則它應該覆蓋整個表格。我不知道該怎麼做,在我的代碼中有什麼問題。在此先感謝如何調整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);
}
}
感謝您的幫助。有用。但是,如果我的所有列的寬度總和小於總寬度,所有列都排列在一側(列不能完全覆蓋表) – Previn
@previn,我從來沒有嘗試過,但您可能能夠結合以上類與本文中的建議:https://stackoverflow.com/questions/15234691/enabling-auto-resize-of-jtable-only-if-fit-viewport/15240806#15240806 – camickr
我得到了解決方案通過使用一些額外的條件以上課程。如果總寬度太低,我啓用AUTO_RESIZE_ALL_COLUMNS ..工作很好。謝謝 – Previn