2011-10-06 91 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