Comment créer des panneaux extensibles à l'aide de swing?

Je voudrais créer une liste de expandand/réduire des panneaux, comme sur cette image:

Comment créer des panneaux extensibles à l'aide de swing?

Je n'ai pas trouvé de composant swing pour cela, j'ai donc commencé à créer quelque chose comme ça.
J'ai essayé de mettre des boutons de l'une sous l'autre, qui remplissent la largeur disponible, mais n'a pas vraiment fonctionne. Je ne vois que la dernière ajoutée.

    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);
Quelques exemples sont à citer ici.

OriginalL'auteur Iter Ator | 2014-09-06