IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

JTabbedPane avec bouton fermer


Sujet :

Composants Java

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 310
    Points : 133
    Points
    133
    Par défaut JTabbedPane avec bouton fermer
    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!

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 54
    Points : 52
    Points
    52
    Par défaut
    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

  3. #3
    Invité
    Invité(e)
    Par défaut
    oui je confirme
    http://www.infonode.net/
    bien sympa, même si on peut le faire à la main (on apprend)

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    A noter qu'avec Java 6 on peut utiliser setTabComponentAt() pour personnaliser l'onglet par un composant perso...


    a++

  5. #5
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 310
    Points : 133
    Points
    133
    Par défaut
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Canvas monCanvas=new Canvas()
    monJPanel.add(monCanvas)
    d'avance merci!

  6. #6
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    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++

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par rolls Voir le message
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Canvas monCanvas=new Canvas()
    monJPanel.add(monCanvas)
    d'avance merci!
    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 :

  8. #8
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 310
    Points : 133
    Points
    133
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    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++
    Je m'explique:
    Je veux que lorsque je fais un clique droit sur le canvas qu'un menu contextuel apparaissent de telle sorte que je puisse créer un element de mon JTree dans le canvas.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par rolls Voir le message
    Je m'explique:
    Je veux que lorsque je fais un clique droit sur le canvas qu'un menu contextuel apparaissent de telle sorte que je puisse créer un element de mon JTree dans le canvas.
    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.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Merci pour la technique d'affichage du "pop-up clic droit" !

    @ rolls
    Et pourquoi préfères tu le Canvas au JPanel (ou JComponent) ?

  11. #11
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par PierreD87 Voir le message
    Merci pour la technique d'affichage du "pop-up clic droit" !
    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).

  12. #12
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 310
    Points : 133
    Points
    133
    Par défaut
    Citation Envoyé par gouessej Voir le message
    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.
    Franchement j'ai pas compris ta méthode

  13. #13
    Invité
    Invité(e)
    Par défaut
    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.

  14. #14
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par rolls Voir le message
    Franchement j'ai pas compris ta méthode
    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.

    Citation Envoyé par PierreD87 Voir le message
    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()
    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.

Discussions similaires

  1. TabPage avec bouton fermer
    Par jpg75014 dans le forum VB.NET
    Réponses: 4
    Dernier message: 14/02/2011, 22h12
  2. Réponses: 1
    Dernier message: 14/02/2011, 09h28
  3. JTabbedPane avec bouton de fermeture
    Par alain57 dans le forum Contribuez
    Réponses: 4
    Dernier message: 13/02/2007, 10h04
  4. Réponses: 3
    Dernier message: 30/06/2005, 12h50
  5. Nouvelle form avec bouton dans barre taches
    Par DarkChamallo dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 17/05/2004, 20h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo