2

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

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

MyRenderer 扩展 DefaultTableCellRenderer 并覆盖 paintComponent 和 getTableCellRendererComponent。

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

4

1 回答 1

4

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

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

table.setDefaultRenderer( Integer.class, myRenderer );
于 2010-09-07T08:55:53.133 回答