Java - добавить экземпляр абстрактного класса в другой экземпляр - PullRequest
0 голосов
/ 11 ноября 2010

У меня есть этот кусок кода:

public class Profile extends Container{
    public Profile(String value) {
        Container profilo_1 =new Container();
        Container profilo_2 =new Container();

        // (1) THIS ADD A BUTTON TO THE MAIN CLASS
        this.createButton().setLabel("Modifica Profilo");

        // (2) NOW I NEED TO ADD A BUTTON INTO THE INSTANCE OF profilo_2 BUT IT FAILS
        profilo_2.add(this.createButton());

        this.add(profilo_1);
        this.add(profilo_2);        
    }
}

точка (2) терпит неудачу, потому что она сказала, что я собираюсь добавить дочерний элемент в этот контейнер, но он уже является владельцем контейнера ...

На самом деле, если я сделаю это:

ILabel label=new ILabel();
profilo_2.add(label);

мне сказали, что ILabel () является абстракцией и не может быть создан!

Как я могу это исправить? Всем привет!)

Ответы [ 4 ]

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

дико догадываюсь, так как это зависит от вашего кода ... Попробуйте это (более того, что сказал Петр)

profilo_2.add(profilo_2.createButton());

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

Попробуйте изменить на

Button button2 = this.createButton();
button2.setLabel("EDIT");
profilo_2.add(button2);

Кстати, это не имеет ничего общего с абстрактными классами, как я вижу

РЕДАКТИРОВАТЬ : Хотя вы говорите, что1 «добавляет кнопку в основной класс», значит ли это, что createButton () делает this.add (button)?Если это так, то вам, вероятно, следует изменить эту функцию, чтобы это не делалось каждый раз при создании кнопки.

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

Проблема, вероятно, в том, что когда вы создаете кнопку с «this.createButton», родительский элемент этой кнопки имеет значение «this» (в этом контексте), и когда вы пытаетесь добавить его в profilo_2, выдается ошибка , Вместо этого вы должны создатьButton непосредственно на profilo_2, тогда родитель будет правильным (и, возможно, вам также не придется добавлять () его?)

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

Возможно, setLabel() возвращает что-то, что не может быть передано Container::add(..). Пожалуйста, укажите ваш код для Container

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