Почему в Java появляется ошибка «не удается найти символ»? - PullRequest
2 голосов
/ 05 ноября 2011
@Override
public Component getTableCellRendererComponent(
        JTable table, Object value, boolean isSelected,
        boolean hasFocus, int row, int col) {

    // *** here  *** 
    Component c = super.getTableCellRendererComponent(table, value, isSelected, 
               hasFocus, row, col); 

    // Formatting here
    return c;
}

Я получаю сообщение об ошибке в указанной строке. Там написано «не могу найти символ», но я не могу понять, в чем реальная проблема.


Обновлено

@ martinusadyh

Боюсь, класс слишком большой, поэтому я не могу вставить его сюда.

@ Судно на воздушной подушке, полное угрей

вот ошибка в Netbeans
http://i.stack.imgur.com/R4fv3.jpg

@ Henery

Это не мой класс. Я только реализую метод интерфейса.

Ответы [ 2 ]

3 голосов
/ 05 ноября 2011

Это не мой класс, я только реализую метод интерфейса.

Тогда ваш родительский класс super равен Object и не имеет метода getTableCellRendererComponent. Вы должны либо расширить подходящий класс, либо обходиться без вызова несуществующих методов.

2 голосов
/ 05 ноября 2011

Вы должны extends DefaultTableCellRenderer вместо implements TableCellRenderer.


Примечание : DefaultTableCellRenderer его метод getTableCellRendererComponent возвращает this. Это означает, что достаточно вызвать super.getTableCellRendererComponent();, не назначая его локальной переменной. Поскольку локальная переменная равна this. Может быть, мое объяснение слишком сложно: пример.

public class MyTableCellRenderer extends DefaultTableCellRenderer
{

    @Override
    public Component getTableCellRendererComponent(
            JTable table, Object value, boolean isSelected,
            boolean hasFocus, int row, int col) {

        super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col); 

        // Formatting here
        setIcon(myCustomIcon);
        setText(myCustomText);

        return this;
    }

}
...