代码之家  ›  专栏  ›  技术社区  ›  Melody Horn

自定义渲染器上的JTable扼流圈

  •  0
  • Melody Horn  · 技术社区  · 15 年前

    我有一个自定义渲染器 JTable . 当我 JTHT 显示器,我得到一个 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));
    

    我哪里出了错,有什么线索吗?

    3 回复  |  直到 15 年前
        1
  •  1
  •   camickr    15 年前

    NPE消息将给出导致错误的语句。所以这就是开始寻找的地方。一旦知道哪个变量为空,就可以开始解决这个问题。我们无法帮助您,因为我们不知道错误发生在哪里。

    我只能建议您不要使用“返回空值”返回空的呈现器。您可以将文本设置为“”或类似的值,然后返回渲染器。

    如果您需要更多帮助,请发布 SSCCE 这说明了问题所在。

        2
  •  1
  •   Peter    15 年前

    我同意卡米克的观点,NPE告诉你什么是空的,所以应该给你一个线索。

    但是看看你的密码我猜

     if (grade == null) return null;
    

    返回空值是触发NullPointerException的好方法

        3
  •  0
  •   Melody Horn    15 年前

    我的一些数据 model 是 null . 那就行了。