2017-06-30 89 views
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);  
    }  
} 

回答

0

在我的代碼的所有列僅設置基於標頭值

嗯,我猜你只當行數爲0

調用代碼

檢查出Table Column Adjuster爲一個類來計算列的寬度。可以在添加/刪除數據行或更改單元格中的數據時動態調用代碼。

+0

感謝您的幫助。有用。但是,如果我的所有列的寬度總和小於總寬度,所有列都排列在一側(列不能完全覆蓋表) – Previn

+0

@previn,我從來沒有嘗試過,但您可能能夠結合以上類與本文中的建議:https://stackoverflow.com/questions/15234691/enabling-auto-resize-of-jtable-only-if-fit-viewport/15240806#15240806 – camickr

+0

我得到了解決方案通過使用一些額外的條件以上課程。如果總寬度太低,我啓用AUTO_RESIZE_ALL_COLUMNS ..工作很好。謝謝 – Previn

相關問題