我在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/

10-13 22:53