2010-08-10 19 views
2

En utilisant JTabbedPane, nous souhaitons implémenter une conception qui nécessite le chevauchement des onglets (illustré dans l'image qui peut être trouvée ici: http://imm.io/YAZ).Onglets superposés avec JTabbedPane

Pas exactement la science des fusées, mais je n'arrive pas à trouver une solution (même après un googling étendu).

Est-ce possible en utilisant JTabbedPane (via PLAF peut-être) ou faut-il écrire un composant personnalisé?

Merci
Tomas

Répondre

0

Pour autant que je sais qu'il a besoin d'un composant personnalisé. Je pense que cela peut être fait en étendant le JTabbedPane et en insérant un nouveau type d'onglet.

La façon dont vous faites le chevauchement consiste à appeler la méthode paintComponent sur l'onglet sélectionné, c'est-à-dire en dernier, il sera le plus proche du recto de la vue. En ce qui concerne la classe d'onglets qui se chevauchent, vous pouvez utiliser presque n'importe quelle sous-classe JComponent pour votre code. Vous pouvez même le thématiser avec des PNG transparents en arrière-plan et appeler le public void setOpaque (boolean isOpaque) sur l'onglet lui-même.

0

Résolu ceci en remplaçant paintTab dans une implémentation d'interface utilisateur personnalisée et en peignant une partie de l'onglet précédent sur le suivant. Cela a été possible puisque paintTab vous permet de peindre sur toute la surface de l'onglet, pas seulement dans les limites de l'onglet qu'il était en train de peindre. Exemple, si nous avons les onglets A, B et C:

L'onglet A peint sa bordure gauche et son remplissage central. L'onglet B peint sa bordure gauche, le remplissage central, puis la bordure droite de l'onglet A. L'onglet C peint sa bordure gauche, le remplissage central, la bordure droite de l'onglet B, puis sa propre bordure droite (puisqu'il s'agit du dernier onglet du volet).

Ensuite, manipulez légèrement les onglets sélectionnés.

La solution ci-dessus n'a pas été difficile à mettre en œuvre et fonctionne très bien.