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:
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
Vous devez vous connecter pour publier un commentaire.
Vous pouvez prendre un coup d'oeil à
JXTaskPaneContainer
etJXTaskPane
de SwingX projet qui a ces avantages:JPanel
est donc pas d'effort supplémentaire est nécessaire pour travailler avec eux.temps.
Si vous n'aimez pas les volets de tâches et souhaitez mettre en place quelque chose sur votre propre alors vous avez
JXCollapsiblePane
(aussi disponible en SwingX API).Vérifier SwingLabs Démos pour un ensemble complet de SwingX composants de démonstration.
Capture d'écran
OriginalL'auteur dic19
Regarder JXTreeTable de la SwingX projet:
Vous pouvez également regarder JXTree, ce qui est semblable, et peut-être mieux, en fonction de vos besoins exacts.
L'obtenir à partir d' ici.
OriginalL'auteur chiastic-security
Le composant que vous cherchez est un accordéon. Jetez un oeil à cette question:
Accordéon pour le Swing?
De votre code, vous ne pouvez voir que la dernière parce que vous êtes en train d'ajouter un panneau avec un
BorderLayout
, avecBorderLayout.North
que la contrainte de mise en page. Chacun d'eux supprime précédemment ajouté panneau. Essayez de passer à un autre modèle - par exempleBoxLayout
.OriginalL'auteur Kalev