Question

J'essaie actuellement de construire un panneau extensible dans Swing (semblable au contrôle Expander de WPF) et j'aimerais conserver les méthodes habituelles de manipulation (par exemple, setLayout , add , etc.). Seuls ceux-ci doivent être routés vers un panneau intégré (celui qui est affiché ou masqué).

Comment ferait-on cela? Redéfinir chaque méthode de JComponent et le réacheminer vers un JPanel incorporé serait fastidieux, mais je ne vois que cela.

Ou devrais-je plutôt rendre le panneau intégré visible de l'extérieur et contraindre les utilisateurs à utiliser quelque chose comme ExpanderPanel.getInnerPanel () . Mais alors ce n’est pas une solution de remplacement immédiate pour JPanel , ce qui serait bien, je pense.

Était-ce utile?

La solution

Dans la version 1.5 (ish), Swing a acheminé quelques méthodes vers le volet contenu dans JFrame , JApplet , etc. Bien qu'il semble y avoir des avantages en termes de convivialité pour ceux qui débutent , cela ne résout pas réellement le problème. Donc tout le monde doit faire face à une API très étrange. Mon conseil est donc d'éviter cette approche.

Autres conseils

Consultez le projet JXTaskPane de Swingx . Il fait déjà ce dont vous avez besoin.

Si vous avez un widget Conteneur contenant un panneau que vous souhaitez afficher et masquer, pourquoi ne pas disposer votre panneau interne comme vous le souhaitez, ajoutez-le au panneau Conteneur, puis utilisez des méthodes statiques sur le conteneur pour indiquer

JPanel p = new JPanel (); // faire quelque chose avec le JPanel ...

ContainerWidget.setContent (p);

ContainerWidget.expandPanel (p, true);

Quelque chose ressemblerait-il à ce travail?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top