Как создать расширяемые панели, используя качели?

Я хотел бы создать список панелей разворачивания / свертывания, как на этом изображении:

Я не нашел никакого компонента свинга для этого, поэтому я начал создавать что-то вроде этого. Я попытался поместить кнопки одну под другой, которые заполняют доступную ширину, но на самом деле не работает. Я могу видеть только последний добавленный.

    JPanel panel = new JPanel();
    panel.setLayout(new BorderLayout());

    panel.add(new JButton("Delphi Projects"), BorderLayout.NORTH);
    panel.add(new JPanel(), BorderLayout.NORTH); // hidden panel
    panel.add(new JButton("Delphi Projects | Delphi Files"), BorderLayout.NORTH);
    panel.add(new JPanel(), BorderLayout.NORTH); // hidden panel
    panel.add(new JButton("Other Files"), BorderLayout.NORTH);
    panel.add(new JPanel(), BorderLayout.NORTH); // hidden panel
    panel.add(new JButton("C++ Builder Projects | C++ Builder Files"), BorderLayout.NORTH);
    panel.add(new JPanel(), BorderLayout.NORTH); // hidden panel

    JScrollPane scroll = new JScrollPane(panel);

Ответы на вопрос(3)

Ваш ответ на вопрос