JTable подавляет пользовательский рендер - PullRequest
0 голосов
/ 08 ноября 2010

У меня есть пользовательский рендер в JTable. Когда мои JTable отображаются, я получаю NullPointerException на JTable.prepareRenderer(). Я не уверен, какая часть моего пользовательского рендерера не подготовима, но я уверен, что это моя вина.

Сокращенная версия моего рендерера (полная версия на это место ):

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;
    }
}

Код, куда я добавляю рендерер (полная версия здесь ):

model = new GradeEntryModel();
table = new JTable(model);
// some work with table
table.setDefaultRenderer(Grade.class, new GradeRenderer(true));

Какие-нибудь указатели относительно того, где я ошибся?

Ответы [ 3 ]

1 голос
/ 08 ноября 2010

Я согласен с camickr, NPE говорит вам, что является нулевым, так что вы должны дать подсказку.

Но, глядя на твой код, я думаю

 if (grade == null) return null;

возврат нуля - хороший способ вызвать исключение NullPointerException

1 голос
/ 08 ноября 2010

Сообщение NPE предоставит вам утверждение, вызвавшее ошибку.Так что это место, чтобы начать искать.Как только вы узнаете, какая переменная равна нулю, вы можете приступить к решению проблемы.Мы не можем вам помочь, потому что понятия не имеем, где происходит ошибка.

Единственное, что я могу предложить, это то, что вам не следует использовать «return null» для возврата нулевого средства визуализации.Вы должны установить текст "" или что-то в этом роде, а затем вернуть средство визуализации.

Если вам нужна дополнительная помощь, опубликуйте SSCCE , который демонстрирует проблему.

0 голосов
/ 09 ноября 2010

Оказывается, некоторые из моих данных в model это null.Это сделало бы это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...