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

AWT/Swing Java Discussion :

menu contextuel sur click droit


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Par défaut menu contextuel sur click droit
    bonjour,

    je cherche à faire un menu contextuel à partir du click droit de la souris, dans le but d'insérer ou de supprimer une ligne dans un JTable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    if (e.getButton()== MouseEvent.BUTTON3) {
    	System.out.println("insertion et suppression");
    	JMenu contextMenu = new JMenu() ;
     
    	JMenuItem insert = new JMenuItem("Insert Phase") ;
    	JMenuItem delete = new JMenuItem("Delete Phase") ;
    	contextMenu.add(insert) ;
    	contextMenu.add(delete) ;
    	contextMenu.setMenuLocation(e.getXOnScreen(), e.getYOnScreen()) ;
                 contextMenu.setEnabled(true) ;
    	contextMenu.setVisible(true) ;
    	contextMenu.setPopupMenuVisible(true) ;
    	maJTable.add(contextMenu) ;
    }

    evidemment ce code n'affiche rien.
    en fait je cherche comment procéder, quels outils utiliser,...

    merci pour vos réponses.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 548
    Par défaut
    Il faut utiliser un JPopupMenu, regarde la doc sur cette classe

  3. #3
    Membre éclairé Avatar de puybaret
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 61
    Par défaut
    Appelle setComponentPopupMenu sur ton tableau en lui passant une instance de JPopupMenu

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Par défaut
    parfait
    j ai juste preferé utiliser :
    myPopup.show(myComponant, e.getX(), e.getY()) ;
    car autrement à la premiere execution, il me placait ma popup en haut à gauche

    merci à vous

  5. #5
    Membre chevronné Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Par défaut
    Si tu veux toujours rester "portable" et conserver le comportement par défaut pour tous les systèmes d'exploitation, il ne faut pas procéder ainsi...

    En effet, pour Windows, un popup s'affiche sur un clic droit... mais pas sur Mac, qui ne possède pas de clic droit !!!

    Donc si tu veux que les utilisateurs Mac puissent eux aussi utiliser ton programme, il te faut écrire cette méthode ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    private void maybeShowPopup(MouseEvent e) {
            if (e.isPopupTrigger()) {
                System.out.println("insertion et suppression");
                JMenu contextMenu = new JMenu() ;
                JMenuItem insert = new JMenuItem("Insert Phase") ;
                JMenuItem delete = new JMenuItem("Delete Phase") ; 
                contextMenu.add(insert) ;
                contextMenu.add(delete) ;
                contextMenu.setMenuLocation(e.getXOnScreen(),e.getYOnScreen()); 
                contextMenu.setEnabled(true) ;
                contextMenu.setVisible(true) ; 
                contextMenu.setPopupMenuVisible(true) ;
                maJTable.add(contextMenu) ;
             }
    }
    ... et appeler cette méthode sur les évènements souris mousePressed(pour Mac, mais pour lequel isPopupTrigger est faux sous windows) et mouseReleased (pour windows).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        public void mousePressed(MouseEvent e) {
            maybeShowPopup(e);
        }
     
        public void mouseReleased(MouseEvent e) {
            maybeShowPopup(e);
        }
    Source :
    How to use Menus

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Par défaut
    il faut penser aux gens qui n'ont pas de mageur
    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/01/2014, 09h25
  2. [XL-97] Ne pas afficher menu contextuel sur clic droit si utilisé pour Macro
    Par jehhej dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/02/2011, 11h52
  3. Afficher un menu contextuelle sur le click droit d'une image
    Par PrinceMaster77 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/01/2006, 12h19
  4. [VB6] menu contextuel sur clique droit souris
    Par da40 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 08/07/2003, 11h07

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