我正在使用setDefaultTableRenderer设置JTable的渲染器。
JTable table = new JTable();
table.setDefaultRenderer(Object.class,MyRenderer);
MyRenderer扩展DefaultTableCellRenderer并覆盖paintComponent和getTableCellRendererComponent。
我有4行8列,出于奇怪的原因,第一行的前两列没有调用我的渲染器方法。我使用SwingUtilites.invoke方法调用我的GUI,并且除了这两个列之外,它还适用于所有其他列列。
答案 0 :(得分:4)
没有看到你的代码我只能猜,但我想你可能有自己的TableModel,它返回每列的column.class。 JTable的某些类(如Integer等)有DefaultCellRenderer。因此,您的第一列可能是Integer列,这会导致JTable使用自己的渲染器。
要避免这种情况,您只需覆盖Integer.class渲染器:
table.setDefaultRenderer( Integer.class, myRenderer );