2009-05-20 8 views
0

Ceci est similaire à la question How to build a Google-chrome tabs and menubar interface in Java Swing? (je veux accomplir la même chose), mais plus à propos: comment mettre des composants devant et derrière les onglets dans un JTabbedPane?JTabbedPane: Composants avant et après les onglets eux-mêmes

Je suis déjà venu avec l'idée de boutons moi-même, mais je préfère avoir un JTabbedPane, puisque c'est vraiment ce que c'est, mais décoré avec un bouton ou des icônes sur les côtés.

J'ai vu que le projet laf-widget de Kirill fait quelque chose comme ça (l'icône de loupe à gauche des onglets) pour plusieurs LaFs. Cependant, je dois admettre que je ne suis pas encore assez bien versé pour comprendre comment il le fait - et aussi cela semble un processus un peu compliqué, où un "physiquement" change le LaF en question (bytecode le manipule), en injectant le laf -Widget stuff dans les délégués de l'interface utilisateur - et je ne sais toujours pas comment le JTabbedPane ou TabbedPaneUI est réellement modulé pour injecter cette icône/bouton.

Répondre

1

J'ai finalement demandé Kirill de Substance LaF/laf-widget de la façon dont il parvient à mettre un bouton devant les onglets du LAF-widget qui décore JTabbedPanes, ce qui est sa réponse:

Il se fie sur le champ BasicTabbedPaneUI.tabAreaInsets pour faire de la place pour le bouton, et setBounds personnalisé du bouton pour se positionner dans cette zone .

Pour plus de code, voir TabOverviewButton et TabOverviewDialogWidget classes dans le projet laf-widget.

En général, le délégué de l'interface utilisateur de fenêtre à onglet est l'un des moins ceux intéressants pour améliorer car il a beaucoup de privé et empaqueter méthodes protégées

Merci, Kirill!

1

JIDE ont un volet à onglets dans le cadre de leur suite de composants qui expose cette fonctionnalité en tant que méthodes simples setBeforeComponent() et setAfterComponent().

Il y a une démo de celui-ci ici: http://www.jidesoft.com/products/1.4/jide_demo.jnlp

+0

Il a ?! Génial - Je viens d'être pointé du côté de Jide à partir d'une autre réponse ici sur Stackoverflow, mais je n'avais pas encore eu l'occasion de vérifier les API - les captures d'écran ne suggèrent pas du tout une telle fonctionnalité. Je suppose que l'on perd le LaF en utilisant Jide? – stolsvik

+0

Cela dépend de ce que vous faites. Les composants JIDE sont très bons pour honorer les LaFs. Nous l'utilisons avec du synthetica et c'est transparent. – banjollity

+0

Comment ça dépend? Avez-vous un pointeur pour savoir où réside la documentation? Je n'arrive pas à le trouver. J'essaie de l'utiliser avec Substance maintenant, et il ne l'honore pas catégoriquement. Il semble utiliser des trucs d'interface utilisateur "vsnet" pour peindre. – stolsvik

Questions connexes