2010-11-11 70 views
0

添加一个抽象类的实例,我有这样一段代码:爪哇 - 在另一个实例

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()是abract,不能被实例化!

我该如何解决?欢呼声给大家:)

回答

1

猜测疯狂,因为这取决于你的代码...试试这个(更多收起什么彼得说)

profilo_2.add(profilo_2.createButton());

+0

不幸的是,这不工作... – markzzz 2010-11-11 15:01:49

+0

你得到一个异常,或者它不工作?顺便说一句,你在使用什么框架?我猜这是一些UI框架?在这种情况下,如果你告诉我们哪一个,我们可以帮助你。 – 2010-11-11 15:07:53

+0

我解决了:)用这个profilo_2.createButton()。setLabel(“EDIT”);有用!!只是我直接调用容器的实例。谢谢,是的,它是一个UI框架:) p.s.作为信息,我如何“大胆”我的文字在这个stackoverflow评论框?我不知道bbcode嘿嘿 – markzzz 2010-11-11 15:09:52

0

可能setLabel()返回的东西不能传递给Container::add(..)。为Container

1

尝试改用

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

通过此无关抽象类的方式请提供你的代码,从我所看到的

编辑:虽然你说#1 “向主类添加一个按钮”,这是否意味着createButton()会执行this.add(button)?如果是这样,那么你应该改变这个功能,这样每次你创建一个按钮都不会完成。

+0

是的,如果我做this.createButton();它与this.add(button)相同; – markzzz 2010-11-11 14:57:39

1

问题可能是,当您使用“this.createButton”创建按钮时,该按钮的父级设置为“this”(在此上下文中),并且当您尝试将其添加到profilo_2时,它会抛出错误。相反,你应该直接在profilo_2上创建按钮,然后父母将是正确的(也许你不必添加()它)?

+0

是的,但我该怎么办?看到主题,我用更多的信息编辑它! – markzzz 2010-11-11 14:58:28

+0

在代码中,它会像@弗拉维奥写的 – 2010-11-11 15:02:49