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

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


MyRenderer扩展了DefaultTableCellRenderer并覆盖了paintComponent和getTableCellRendererComponent。

我有4行8列,出于奇怪的原因,第一行的前两列没有调用我的渲染器方法。我使用SwingUtilites.invoke方法来调用我的GUI及其对除这两列之外的所有其他列的工作。

最佳答案

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

为了避免这种情况,您只需要重写Integer.class渲染器即可:

table.setDefaultRenderer( Integer.class, myRenderer );

10-06 13:34
查看更多