我使用以下代码创建了一个JDialog:
public class GUIsub extends JFrame {
private JLabel item1;
public GUIsub() {
super("The title");
setLayout(new FlowLayout());
item1 = new JLabel("This is a JLabel!");
item1.setToolTipText("Are you hovering?!");
add(item1);
}
}
为什么我的方法必须与我的班级同名?有什么好处,我可以用另一个名字得到相同的结果吗?如果是这样,怎么样?为什么我必须扩展到JFrame,为什么我不能导入必要的库?
我对此感到很困惑。感谢。
答案 0 :(得分:2)
为什么我的方法必须与我的班级同名?
这不是一种方法,而是constructor。在声明构造函数时使用类的名称只是Java语言设计者决定表明它是构造函数而不是方法的方式。 (这是一种常见模式,其他一些语言也是如此,包括C ++ [部分启发Java]和C#[部分受Java启发]。)
为什么我必须扩展到JFrame,为什么我不能只导入必要的库?
最好在SO上提出一个问题/问题。
您必须扩展JFrame
,因为您正在使用的GUI系统适用于JFrame
的实例。据他所知,您的类的实例是 JFrame
,它在与这些实例交互时使用JFrame
上定义的方法。这可以通过接口完成,但本例中的设计者改为使用基类。
答案 1 :(得分:1)
public GUIsub()不是一个方法,它是一个构造函数。构造函数必须与Java中的类具有相同的名称。
答案 2 :(得分:1)
public GUIsub()
是该类的构造函数...
您可以将它用于"准备稍后使用的对象" ...