2010-09-07 47 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