我试图在一个类中创建一个JFrame并在我的主类中添加一个JPanel,这是不可能的吗?
这是我的主班
public class Main {
JPanel p;
JLabel lbl1;
public static void main(String[] args) {
new Main();
}
Main() {
new Window();
JPanel p = new JPanel();
JLabel lbl1 = new JLabel("Hello");
p.add(lbl1);
}
}
还有Window类
public class Window extends Main {
Window() {
JFrame frame = new JFrame();
frame.setSize(400, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.add(p);
}
}
我在线程“ main” java.lang.StackOverflowError中得到异常
答案 0 :(得分:3)
您的Window类扩展Main。当您调用子类类的构造函数时,将首先调用父类的构造函数。
在您的情况下,您要在Main构造函数中调用Window构造函数。由于继承,Window构造函数调用Main构造函数,从而导致StackOverflow:每个构造函数都调用另一个