Bonjour à la communauté!
J'aimerai savoir s'il existe un composant autre que la JTabbedPane qui permet de creer des onglets avec un bouton fermer.
D'avance merci!
Bonjour à la communauté!
J'aimerai savoir s'il existe un composant autre que la JTabbedPane qui permet de creer des onglets avec un bouton fermer.
D'avance merci!
Bonjour
Dans ce topic, un utilisateur a posté son implémentation d'un JTabbedPane avec un bouton "Fermer", et un autre parle de la librairie Infonode.
http://www.developpez.net/forums/d27...ton-fermeture/
Bon courage
oui je confirme
http://www.infonode.net/
bien sympa, même si on peut le faire à la main (on apprend)
Salut,
A noter qu'avec Java 6 on peut utiliser setTabComponentAt() pour personnaliser l'onglet par un composant perso...
a++
J'ai réussi à créer mes onglets sans le bouton fermer.
J'ai associé à chaque onglet un JPanel et je désir maintenant associer a chaque JPanel un canvas pour pourvoir afficher un menu contextuel.
Mon idée est de créer une arborescence sur le canvas à partir du ménu contextuel.
Je ne sais pas comment m'y prendre; Pour le canvas je fait ceci
d'avance merci!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Canvas monCanvas=new Canvas() monJPanel.add(monCanvas)
Quel intérêt d'utiliser un Canvas (composant AWT) sur un JPanel (composant Swing) ??? Il est préférable d'éviter les mélanges AWT/Swing
De plus je ne comprend pas ce que tu cherches à faire avec cela...
a++
Ca n'a rien à voir avec le sujet. Pour créer une arborescence, utilise un JTree. J'ai fait un truc similaire dans JFPSM, mon code source est disponible. Chaque onglet contient un JPanel et je dessine directement dedans. Chaque onglet correspond à un étage affiché dans le JPanel et à un élément dans l'arborescence. Ainsi, je peux fermer l'étage depuis l'onglet et depuis l'arborescence :
Ajoute un MouseListener sur ton canevas. Dans ce MouseListener, appelle la méthode isPopupTrigger() de la classe MouseEvent dans ta méthode mouseReleased(MouseEvent me) et mousePressed(MouseEvent me) pour vérifier si c'est bien un clic droit ou plus généralement un clic destiné à afficher un menu contextuel. Si c'est le cas, appelle la méthode show sur ton JPopupMenu. Dans ce JPopupMenu, préalablement, ajoute un JMenuItem avec un ActionListener qui lui appelle insertNodeInto sur le DefaultTreeModel de ton JTree pour ajouter ton noeud dans ton arbre.
Merci pour la technique d'affichage du "pop-up clic droit" !
@ rolls
Et pourquoi préfères tu le Canvas au JPanel (ou JComponent) ?
De rien. Je conseille d'appeler MouseEvent.isPopupTrigger() dans mouseReleased(MouseEvent me) et mousePressed(MouseEvent me) pour des raisons de portabilité comme c'est mentionné dans la documentation de l'API Java.
Pour fermer l'onglet depuis l'arbre, place un MouseListener sur l'arbre et les méthodes JTree.getSelectionPaths() et/ou JTree.getClosestPathForLocation(int x,int y) pour récupérer le chemin des nœuds sélectionnés et/ou sous le curseur. Ensuite, ton nœud doit connaître l'indice de l'onglet concerné ou être capable de le déduire à partir d'autres informations et alors, tu appelles simplement JTabbedPane.removeTabAt(int index).
Pour définir le composant de ton onglet : setTabComponentAt()
Donc tu ajoute un JPanel ou un JComponent (moi je préfère)
Sur ton composant tu ajoutes un MouseListener (que tu implémentes) ou un MouseAdapter.
Dans la méthode mouseClicked() de ton MouseListener/Adapter, tu reçois un MouseEvent.
Tu vérifie qu'il s'agit bien d'un clic droit : me.isPopupTrigger()
Tu crée un JPopUpMenu.
Tu le rempli avec ce que tu veux.
Ecoute, j'ai cité les méthodes et les classes à utiliser; si tu ne comprends toujours pas, va jeter un coup d'oeil dans la documentation de Java. De plus, une partie de ce dont j'ai parlé est implémentée dans mon code source. J'essaie de te donner des éléments de réponses, à toi de recoller les morceaux.
Ce n'est pas ce que j'ai écrit et c'est parce qu'il y a une très bonne raison :
public boolean isPopupTrigger()
Returns whether or not this mouse event is the popup menu trigger event for the platform.
Note: Popup menus are triggered differently on different systems. Therefore, isPopupTrigger should be checked in both mousePressed and mouseReleased for proper cross-platform functionality.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager