我在JTable
中有一个自定义渲染器。当显示我的JTable
时,我在NullPointerException
上看到一个JTable.prepareRenderer()
。我不确定自定义渲染器的哪一部分是不可准备的,但是我确定这是我的错。
我的渲染器的压缩版本(完整版本位于this spot):
public class GradeRenderer extends JLabel implements TableCellRenderer {
public Component getTableCellRendererComponent(JTable table, Object grade,
boolean isSelected, boolean hasFocus, int row, int column) {
if (grade == null) return new JLabel();
Grade myself = (Grade) grade;
int score = myself.getScore();
setText(String.valueOf(score));
Assessment thing = myself.getThing();
GradeStatus status = myself.getStatus();
AssessmentType type = thing.getType();
// do some work with status
// do some work with type
return this;
}
}
我添加渲染器的代码(完整版本here):
model = new GradeEntryModel();
table = new JTable(model);
// some work with table
table.setDefaultRenderer(Grade.class, new GradeRenderer(true));
关于我哪里出了问题的任何指示?
最佳答案
NPE消息将为您提供引起错误的语句。所以这是开始寻找的地方。一旦知道哪个变量为空,就可以开始解决问题。我们无法为您提供帮助,因为我们不知道错误发生在哪里。
我唯一可以建议的就是您不应该使用“返回null”来返回null渲染器。您可以将文本设置为“”或类似的名称,然后返回渲染器。
如果您需要更多帮助,请发布您的SSCCE来演示问题。
关于java - 自定义渲染器上的JTable阻塞,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4121176/