为什么 TableCellRenderer 为空?
Why is TableCellRenderer null?
当我的 table 使用新数据更新自身时,它会调用 prepareRenderer
。这是 JTable 在更新时默认执行的操作。但是,当我的程序调用 prepareRenderer 方法时,它在其参数中为它提供了一个空的 TableCellRenderer。因此我得到一个空指针异常。
dataTable = new javax.swing.JTable() {
@Override
public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
return super.prepareRenderer(renderer, row, column);
}
};
我就是这样声明的。 @Override 甚至不是真正需要的。我把它放在那里,这样我就可以在其中放置一个断点,这样我就可以看到它实际上正在触发以及参数的值是什么。无论出于何种原因,当 java 调用此 prepareRender 方法时,它会为 TableCellRenderer 参数提供空值。为什么要这样做,我该如何解决?由于 NPE,我在屏幕上什么也看不到。
问题出在我的表格模型中。具体来说,由于我对 return 的编码方式,getColumnClass
方法没有 returning 任何东西(只有 null)。如果 getColumnClass 方法不起作用,tablecellrender 将失败,因为它不知道如何显示数据。
当我的 table 使用新数据更新自身时,它会调用 prepareRenderer
。这是 JTable 在更新时默认执行的操作。但是,当我的程序调用 prepareRenderer 方法时,它在其参数中为它提供了一个空的 TableCellRenderer。因此我得到一个空指针异常。
dataTable = new javax.swing.JTable() {
@Override
public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
return super.prepareRenderer(renderer, row, column);
}
};
我就是这样声明的。 @Override 甚至不是真正需要的。我把它放在那里,这样我就可以在其中放置一个断点,这样我就可以看到它实际上正在触发以及参数的值是什么。无论出于何种原因,当 java 调用此 prepareRender 方法时,它会为 TableCellRenderer 参数提供空值。为什么要这样做,我该如何解决?由于 NPE,我在屏幕上什么也看不到。
问题出在我的表格模型中。具体来说,由于我对 return 的编码方式,getColumnClass
方法没有 returning 任何东西(只有 null)。如果 getColumnClass 方法不起作用,tablecellrender 将失败,因为它不知道如何显示数据。