paintComponent和getTableCellRendererComponent未被调用

时间:2010-09-07 07:11:02

标签: java swing jtable renderer

我正在使用setDefaultTableRenderer设置JTable的渲染器。

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

MyRenderer扩展DefaultTableCellRenderer并覆盖paintComponent和getTableCellRendererComponent。

我有4行8列,出于奇怪的原因,第一行的前两列没有调用我的渲染器方法。我使用SwingUtilites.invoke方法调用我的GUI,并且除了这两个列之外,它还适用于所有其他列列。

1 个答案:

答案 0 :(得分:4)

没有看到你的代码我只能猜,但我想你可能有自己的TableModel,它返回每列的column.class。 JTable的某些类(如Integer等)有DefaultCellRenderer。因此,您的第一列可能是Integer列,这会导致JTable使用自己的渲染器。

要避免这种情况,您只需覆盖Integer.class渲染器:

table.setDefaultRenderer( Integer.class, myRenderer );