java - 两个类之间的 java.lang.StackOverflowError
问题描述
我正在尝试在一个类中创建一个 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 中得到异常
解决方案
您的 Window 类扩展了 Main。调用子类的构造函数时,先调用父类的构造函数。
在您的情况下,您在 Main 构造函数中调用 Window 构造函数。Window 构造函数调用 Main 构造函数,因为继承,导致 StackOverflow :每个构造函数调用另一个
推荐阅读
- java - Artifactory REST API 拒绝有效的 JSON
- haskell - 如何解释 Haskell 中的关联性/优先级
- reactjs - 如何在 axios.get 中添加正文?
- linux - Bash - 多行 Whiptail 反标题
- python - 避免使用双引号将 pandas.to_sql 写入表(PostgreSQL 数据库)
- c++ - 如何在 C++ 中使用双链表实现迭代器前后方法?
- parsing - 使用改造解析泛型类型列表
- git - 命令行上的 Git 行为非常奇怪
- python - 以python方式循环遍历子字符串
- django - 如何在 Django rest 框架中为嵌套评论创建视图?