2011-06-08 99 views
0

我有一个扩展JList的类,我不知道如何使JList构造函数在我的类中工作。我知道,这可与JList的构造进行:从类扩展构造函数

DefaultListModel model = new DefaultListModel(); 
JList list = new JList(model); 

相反,如果我做同样的我的同班同学:

DefaultListModel model = new DefaultListModel(); 
DatabaseJList lista = new DatabaseJList(model); 

的IDE建议我删除参数匹配DatabaseJList。

当我扩展它时,不应该是继承到我的类的Jlist构造函数吗?

感谢您的帮助;)

回答

4

不可以。您必须明确定义构造函数。任何想要“继承”的构造函数都必须在子类中定义,并且很可能必须使用相同的参数调用super(..)

0

可以使用

super(...) 

定义在类的构造函数具有相同的参数超类调用父类的在类的构造函数的构造。然后,只需使用超()来调用父类的构造函数,然后继续做你的初始化

记住,超()应该是你的构造

1

的第一线构造函数不能被继承(至少,而不是你所想的)。你必须明确写出这样的构造函数:

class DatabaseJList extends JList { 

    public DatabaseJList(ListModel model) { 
     super(model); // Call through to the super-class constructor 
    } 

    ... 

} 
+0

你应该使用'ListModel'接口而不是'DefaultListModel'类(即程序到接口)。 – 2011-06-08 21:55:47

+0

@Steve:啊,我不认为'ListModel'可能是一件事情。我会更新... – 2011-06-08 21:58:48

0

我认为你需要把超(模型);在你的DatabaseJList构造函数中