按钮类:
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中唯一一个以字符串作为参数的方法吗?
答案 0 :(得分:23)
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");
这对我有用。 : - )