2011-10-06 77 views
1

是否可以在其單元格渲染器中設置JTable列的寬度?我試過下面的代碼,但它似乎什麼都不做。單元格渲染器設置列寬

//in main class where table defined; 

table.getColumnModel().getColumn(0).setCellRenderer(renderer); 

//in renderer class; 

setSize(10, getPreferredSize().height); 
+1

沒有,不要:不要一次換呼叫目標的狀態(getXXCellRendererComponent)方面的所有參數嚴格只讀 – kleopatra

回答

5

1)其可以設置JTable Column's寬度此(非常簡單的)方式

TableColumnModel tcm = myTable.getColumnModel(); 
tcm.getColumn(0).setPreferredWidth(int); 

2)I表明不這樣做內部TableRenderer

  • 因爲我不每次渲染器被觸發時,都看不到重繪原因

  • ,並從你的代碼,你張貼在這裏不適合我真的不清楚是什麼/如何/在哪裏/爲什麼

+0

其實我現在使用這個方法設置widht,但是我有大約20多個表totaly使用這個通用的渲染器。這個渲染器設置了相關表的行號。我想知道如果我可以設置它的寬度這是所有這些表格的通用位置。或者任何其他方法來集中設置此列寬度。 – cacert

+1

試圖避免這種情況,因爲Renderer從很多事件中工作並重新繪製TableCell,有兩種方法1)通過計算TableCell中的max_lengh和每個TableColumn的separatelly來計算TableColumn的widht 2)手動編寫代碼,其中setPreferredSize爲每個TableColumns, 3)僅在開始時調用此代碼,然後通過(從某些內置的)刷新 – mKorbel

+0

謝謝你的說服性和簡單的解釋。 – cacert