2010-09-07 101 views
2

我正在使用setDefaultTableRenderer設置JTable的渲染器。paintComponent和getTableCellRendererComponent未被調用

JTable table = new JTable(); 
table.setDefaultRenderer(Object.class,MyRenderer); 

MyRenderer延伸DefaultTableCellRenderer並重寫的paintComponent和getTableCellRendererComponent。

我有4行8列,出於奇怪的原因,我的渲染器方法沒有調用第一行的前兩列。我使用SwingUtilites.invoke方法來調用我的GUI和它的工作,除了這些以外的所有其他列兩列。

回答

4

不看你的代碼我只能猜測,但我想你可能有你自己的TableModel,它返回每一列的column.class。對於其中的一些類,JTable具有DefaultCellRenderer,比如Integer等等。所以可能你的第一列是Integer列,這會導致JTable使用它自己的渲染器。

爲了避免這種情況,你只需要覆蓋Integer.class渲染:

table.setDefaultRenderer(Integer.class, myRenderer); 
+0

你是對的感謝 – Harish 2010-09-07 14:51:10