JAVA中的super()函数

时间:2008-12-20 03:36:07

标签: java super

按钮类:

class SubmitButton extends JButton implements ActionListener {
    public SubmitButton(String title){
        super(title);
        ....

我在哪里声明:

SubmitButton submit = new SubmitButton("Submit");
submit.setBounds(530+150, 200, 100, 25);

super(title)如何将String标题设置为按钮的标题?它如何与常规JButtons的方法.setText()相同?

换句话说,如何调用super()与.setText()做同样的事情 super()如何知道更改标题?是.setText()是JButton Class中唯一一个以字符串作为参数的方法吗?

6 个答案:

答案 0 :(得分:23)

  • SubmitButton扩展JButton
  • JButton有一个构造函数,可能看起来像这样(简化):

    public JButton(String title) {
        setText(title);
    }
    
  • SubmitBUtton有一个构造函数:

    public SubmitButton(String title) {
        super(title);
    }
    

SubmitButton构造函数正在调用超类(JButton)构造函数,而构造函数又调用setText。现在在内部,JButton可能会有不同的工作方式,但效果是一样的。

总的来说,super(...)调用超类构造函数。

答案 1 :(得分:7)

JButton是一个支持多个构造函数的中央Java Swing类。其中一个构造函数允许您设置按钮标签的文本。

添加超级(标题)实际上并没有进行调用 - 无论如何都会调用父级的构造函数,但它有助于选择调用哪个构造函数。

setText()操作允许您在创建按钮之后(通常)在显示按钮之前更改文本。

答案 2 :(得分:4)

当使用构造函数SubmitButton(String title)初始化SubmitButton时,使用标题调用父/超类构造函数。如果你没有指定super(title),那么Java编译器会自动插入代码来调用超类的默认构造函数。然后在创建SubmitButton时不会设置标题。

此外,超类(JButton)可能在其构造函数中使用.setText(string),这就是它执行相同功能的原因(需要查看实际的Java源代码)。

http://www.javaworld.com/jw-10-2000/jw-1013-constructors.html?page=2
http://leepoint.net/notes-java/oop/constructors/constructor.html

答案 3 :(得分:2)

在java的所有情况下,对super()的“调用”会调用父类的ctor。与所有函数一样,当您调用ctor时,Java模式与名称和参数类型匹配。 JButton使用字符串参数声明一个ctor,所以当你调用super(title)时,效果是你正在调用带有单个字符串参数的直接超类(JButton)的构造函数。

答案 4 :(得分:1)

http://java.sun.com/javase/6/docs/api/javax/swing/JButton.html#JButton(java.lang.String)

(复制粘贴整个URL;由于某种原因,String部分未链接)

它调用上面链接的JButton类中定义的构造函数,它将按钮的文本设置为传入的String.exper()是对超类构造函数的调用。

答案 5 :(得分:0)

我个人通过设置标题而非文字来解决这个问题。

static String TitleName =" Some Title&#34 ;; super(TitleName);

然后在你的按钮或应该采取行动的地方。

setTitle(" New Title");

这对我有用。 : - )