java.lang.StackOverflowError между двумя классами - PullRequest
1 голос
/ 03 апреля 2019

Я пытаюсь создать 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

1 Ответ

3 голосов
/ 03 апреля 2019

Ваш класс Window расширяет Main. Когда вы вызываете конструктор класса подкласса, конструктор родительского класса вызывается первым.

В вашем случае вы вызываете конструктор Window в своем конструкторе Main. Конструктор Window вызывает конструктор Main из-за наследования, вызывая поток StackOver: каждый конструктор вызывает другой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...