Как создать конкретный конструктор класса - PullRequest
2 голосов
/ 05 июня 2011

У меня очень простой вопрос по Java JTable.Я создаю этот класс, чтобы сделать вещи проще в остальной части моего приложения.Я получаю сообщение об ошибке при запуске.Я знаю, что означают ошибки, но не знаю, что еще попробовать.

В коде вы увидите, что я пытаюсь выполнить:

Мой класс:

import javax.swing.*;
public class CPTable extends JScrollPane
{
    private JTable table;
    CPTable(Object [] headers, Object [][] data)
    {
        table = new JTable(data, headers);
        this = new JScrollPane(table);//The line I can't figure out.
    }
}

Мои ошибки: (очевидная)

cannot assign a value to final variable this
    this = new JScrollPane(table);

и

incompatible types
found   : javax.swing.JScrollPane
required: CPTable

1 Ответ

1 голос
/ 05 июня 2011

Попробуйте это:

private CPTable(JTable table) {
    super(table);
    this.table = table;
}

public CPTable(Object[] headers, Object[][] data) {
    this(new JTable(data, headers));
}

Вы не можете переназначить this, но вы можете вызвать правильный конструктор суперкласса, используя super (который должен быть первым оператором в вашем конструкторе).

Оператор this называется «делегированием конструктора» - он соединяется с другим конструктором, так что вы можете передать таблицу суперклассу, а также присвоить ее полю table.

...