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 :

Un menu contextuel


Sujet :

AWT/Swing Java

  1. #1
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    679
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 679
    Par défaut Un menu contextuel
    Bonjour, quelqu'un sait il comment réaliser un menu contextuel en JAVA avec SWT ??
    j'ai essayé mais ça fonctionne pas le menu n'affiche pas si je clic droit sur la souris

    voila le code
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
     
    import javax.swing.SwingUtilities;
    import javax.swing.AbstractAction;
    import javax.swing.ImageIcon;
    import javax.swing.JPanel;
    import javax.swing.JFrame;
    import javax.swing.JMenuBar;
    import javax.swing.KeyStroke;
    import java.awt.Rectangle;
    import java.awt.event.*;
    import javax.swing.JPopupMenu;
    import javax.swing.JTextField;
     
    public class teste extends JFrame {
    private Actions actionEnregistrer = new Actions("Enregistrer", 'W', "Sauvegarder le texte");
    private Actions actionCouper = new Actions("Couper", 'X', "Enlever le texte sélectionné"); // @jve:decl-index=0:
    private Actions actionCopier = new Actions("Copier", 'C', "Copier le texte sélectionné");
    private Actions actionColler = new Actions("Coller", 'V', "Coller le texte à l'endroit du curseur");
     
    private static final long serialVersionUID = 1L;
     
    private JPanel jContentPane = null;
     
    private JMenuBar jJMenuBar = null;
    private JPopupMenu jPopupMenu = null; // @jve:decl-index=0:visual-constraint="94,78"
    private JTextField jTextField = null;
     
     
    private JMenuBar getJJMenuBar() {
    if (jJMenuBar == null) {
    jJMenuBar = new JMenuBar();
    }
    return jJMenuBar;
    }
     
     
    private JPopupMenu getJPopupMenu() {
    if (jPopupMenu == null) {
    jPopupMenu = new JPopupMenu();
    jPopupMenu .add(actionEnregistrer);
    jPopupMenu .addSeparator();
    jPopupMenu .add(actionCopier);
    jPopupMenu .add(actionColler);
    }
    return jPopupMenu;
    }
     
     
    private JTextField getJTextField() {
    if (jTextField == null) {
    jTextField = new JTextField();
    jTextField.setComponentPopupMenu(jPopupMenu);
    jTextField.setBounds(new Rectangle(114, 45, 118, 42));
    }
    return jTextField;
    }
     
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    SwingUtilities.invokeLater(new Runnable() {
    public void run() {
    teste thisClass = new teste();
    thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    thisClass.setVisible(true);
    }
    });
    }
     
     
    public teste() {
    super();
    initialize();
    }
     
     
    private void initialize() {
    this.setSize(300, 200);
    this.setJMenuBar(getJJMenuBar());
    this.setContentPane(getJContentPane());
    this.setTitle("JFrame");
    }
     
     
    private JPanel getJContentPane() {
    if (jContentPane == null) {
    jContentPane = new JPanel();
    jContentPane.setLayout(null);
    jContentPane.add(getJTextField(), null);
     
    }
    return jContentPane;
    }
    private class Actions extends AbstractAction {
    private String méthode;
     
    public Actions(String libellé, char raccourci, String description) {
    super(libellé, new ImageIcon(libellé.toLowerCase()+".gif"));
    putValue(SHORT_DESCRIPTION, description);
    putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke("control "+raccourci));
    }
     
    public void actionPerformed(ActionEvent e) {
    try {
     
    }
    catch (Exception ex) { teste.this.setTitle("Problème");}
     
    }
    private void couper() {jTextField.cut(); }
    private void copier() { jTextField.copy(); }
    private void coller() { jTextField.paste(); }
    }
    }
    merci d'avance

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Sauf erreur de ma part, je ne vois pas le rapport avec SWT.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre Expert
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Par défaut
    Citation Envoyé par dinobogan Voir le message
    Sauf erreur de ma part, je ne vois pas le rapport avec SWT.
    Je partage ton avis !

    Sinon pour le code, tu dois faire ce changement dans le code de la méthode getJTextField.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private JTextField getJTextField() 
    {
    [...]
    //getJPopupMenu() crée une instance JPopupMenu
    jTextField.setComponentPopupMenu(getJPopupMenu());
    [...]
     
    }

  4. #4
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    679
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 679
    Par défaut
    merci mais
    le problème que je n'arrive pas à faire les action sur plusieurs jtextfield
    dans l'exemple j'ai deux jtextfield
    je veux si je point sur un jtextfield les action cut coller copie fonctionne sur le jtetfield sélectionné
    merci

    voila le code

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
     
    import javax.swing.SwingUtilities;
     import javax.swing.AbstractAction;
     import javax.swing.ImageIcon;
    import javax.swing.JPanel;
    import javax.swing.JFrame;
    import javax.swing.JMenuBar;
    import javax.swing.KeyStroke;
    import java.awt.Rectangle;
    import java.awt.event.*;
    import javax.swing.JPopupMenu;
    import javax.swing.JTextField;
    import javax.swing.JMenuItem;
    import javax.swing.JMenu;
     
    public class teste extends JFrame {
     
    	private static final long serialVersionUID = 1L;
     
    	private JPanel jContentPane = null;
     
    	private JPopupMenu jPopupMenu = null;  //  @jve:decl-index=0:visual-constraint="94,78"
    	private JTextField jTextField = null;
    	private JTextField jTextField1 = null;
     
    	private JPopupMenu getJPopupMenu() {
    		if (jPopupMenu == null) {
    			jPopupMenu = new JPopupMenu();
    			jPopupMenu.add(new Option("Couper", 'X', "Enlève le texte")).addActionListener(new ActionListener() {
    			         public void actionPerformed(ActionEvent e) {
    			           jTextField.cut();
    			         }
    			      });
    			jPopupMenu.add(new Option("Copier", 'C', "Copie le texte")).addActionListener(new ActionListener() {
    			         public void actionPerformed(ActionEvent e) {
    			        	 jTextField.copy();
    			         }
    			      });
    			jPopupMenu.add(new Option("Coller", 'V', "Ajoute le texte copier")).addActionListener(new ActionListener() {
    			         public void actionPerformed(ActionEvent e) {
    			        	 jTextField.paste();
    			         }
    			      });
     
     
    			jPopupMenu .addSeparator();
     
     
    		}
    		return jPopupMenu;
    	}
     
     
    	private JTextField getJTextField() {
    		if (jTextField == null) {
    			jTextField = new JTextField();
     
    			jTextField.setComponentPopupMenu(getJPopupMenu());
     
    			jTextField.setBounds(new Rectangle(90, 12, 118, 42));
     
    		}
    		return jTextField;
    	}
     
    	/**
             * This method initializes jTextField1  
             *      
             * @return javax.swing.JTextField       
             */
    	private JTextField getJTextField1() {
    		if (jTextField1 == null) {
    			jTextField1 = new JTextField();
    			jTextField1.setComponentPopupMenu(getJPopupMenu());
    			jTextField1.setBounds(new Rectangle(50, 80, 117, 41));
    		}
    		return jTextField1;
    	}
     
     
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		SwingUtilities.invokeLater(new Runnable() {
    			public void run() {
    				teste thisClass = new teste();
    				thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    				thisClass.setVisible(true);
    			}
    		});
    	}
     
     
    	public teste() {
    		super();
    		initialize();
    	}
     
     
    	private void initialize() {
    		this.setSize(300, 200);
    		this.setContentPane(getJContentPane());
    		this.setTitle("JFrame");
    	}
     
     
    	private JPanel getJContentPane() {
    		if (jContentPane == null) {
    			jContentPane = new JPanel();
    			jContentPane.setLayout(null);
    			jContentPane.add(getJTextField(), null);
    			jContentPane.add(getJTextField1(), null);
     
    		}
    		return jContentPane;
    	}
    	 private class Option extends JMenuItem {
    	      public Option(String intitulé, char raccourci, String aide) {
    	         super(intitulé, new ImageIcon(intitulé.toLowerCase()+".gif"));
    	         setAccelerator(KeyStroke.getKeyStroke("control "+raccourci));
    	         setToolTipText(aide); 
    	      }
    	   }
     
     
     
    }

  5. #5
    Membre Expert
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Par défaut
    Citation Envoyé par minooo Voir le message
    merci mais
    le problème que je n'arrive pas à faire les action sur plusieurs jtextfield
    Ta méthode actionPerformed est vide :
    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
     
    public void actionPerformed(ActionEvent e)
    {
    try {
          if(getValue(NAME).equals("Copier"))
              copier();
          else if(getValue(NAME).equals("Coller"))
              coller();
     
          [...]
     
     
    }
    catch (Exception ex) { teste.this.setTitle("Problème");}
    }

  6. #6
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    679
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 679
    Par défaut
    Citation Envoyé par slim_java Voir le message
    Ta méthode actionPerformed est vide :
    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
     
    public void actionPerformed(ActionEvent e)
    {
    try {
          if(getValue(NAME).equals("Copier"))
              copier();
          else if(getValue(NAME).equals("Coller"))
              coller();
     
          [...]
     
     
    }
    catch (Exception ex) { teste.this.setTitle("Problème");}
    }

    regarde cette partie de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    jPopupMenu.add(new Option("Couper", 'X', "Enlève le texte")).addActionListener(new ActionListener() {
    			         public void actionPerformed(ActionEvent e) {
     
    			        	 jTextField.cut();
    			         }
    			      });
    j'ai plusieurs jtexField comment faire le teste si je pointe sur un parmi 4 jtextfield

  7. #7
    Membre Expert
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Par défaut
    Tu dois plus modifier tes messages !!
    Si tu as besoin de faire une modification niveau code, tu dois alors créer un nouveau sujet ou bien, envoyer un nouveau post; En effet, de tel sujet pourra servir à d'autres pouvant avoir le même problème.

    Concernant ta question, tu dois récupérer le JTextField à modifier;
    par exemple :


  8. #8
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    679
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 679
    Par défaut
    Citation Envoyé par slim_java Voir le message
    Tu dois plus modifier tes messages !!
    Si tu as besoin de faire une modification niveau code, tu dois alors créer un nouveau sujet ou bien, envoyer un nouveau post; En effet, de tel sujet pourra servir à d'autres pouvant avoir le même problème.

    Concernant ta question, tu dois récupérer le JTextField à modifier;
    par exemple :

    comment pointer sur jtextfiled si j'ai plusieurs jtextfield

  9. #9
    Membre Expert
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Par défaut
    Salut,

    Comme je t'ai dis, il faut avoir la trace du JTextField en question que ce soit pour le "copy" ou pour le "past".
    Dans mon exemple, j'ai créer une classe monTextField(basée sur ton code) permettant de définir un modéle de JTexField avec un menu popup et toutes les fonctions copier/coller/couper.

    classe monTextField

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    class monTextField extends JTextField {
     
        public monTextField(int x, int y, int l, int h) {
            this.setBounds(x, y, l, h);
            JPopupMenu jPopupMenu = new JPopupMenu();
            jPopupMenu.addSeparator();
            this.setComponentPopupMenu(jPopupMenu);
     
            jPopupMenu.add(new Option("Couper", 'X', "Enlève le texte")).addActionListener(new ActionListener() {
     
                public void actionPerformed(ActionEvent e) {
                    monTextField.this.cut();
                }
            });
            jPopupMenu.add(new Option("Copier", 'C', "Copie le texte")).addActionListener(new ActionListener() {
     
                public void actionPerformed(ActionEvent e) {
                    monTextField.this.copy();
                }
            });
            jPopupMenu.add(new Option("Coller", 'V', "Ajoute le texte copier")).addActionListener(new ActionListener() {
     
                public void actionPerformed(ActionEvent e) {
                    monTextField.this.paste();
                }
            });
        }
     
        private class Option extends JMenuItem {
     
            public Option(String intitulé, char raccourci, String aide) {
                super(intitulé, new ImageIcon(intitulé.toLowerCase() + ".gif"));
                setAccelerator(KeyStroke.getKeyStroke("control " + raccourci));
                setToolTipText(aide);
            }
        }
    }
    Cela te permet par la suite d'ajouter des JTextField autant que tu veux en spécifiant juste la taille et la position dans ton panneau.
    ( ce n'est pas recommandé, vaudrer mieux utiliser un layout manager pour ton panneau)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public void run() {
                    teste thisClass = new teste();
                    JPanel pan = new JPanel();
                    pan.setLayout(null);
                    pan.add(new monTextField(0, 0, 100, 20));
                    pan.add(new monTextField(0, 50, 100, 20));
                    thisClass.getContentPane().add(pan);
                    thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    thisClass.setVisible(true);
                }
            });
    Code complet :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
     
    public class teste extends JFrame {
     
        private JPanel jContentPane = null;
        private JTextField jTextField = null;
        private JTextField jTextField1 = null;
     
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            SwingUtilities.invokeLater(new Runnable() {
     
                public void run() {
                    teste thisClass = new teste();
                    JPanel pan = new JPanel();
                    pan.setLayout(null);
                    pan.add(new monTextField(0, 0, 100, 20));
                    pan.add(new monTextField(0, 50, 100, 20));
                    thisClass.getContentPane().add(pan);
                    thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    thisClass.setVisible(true);
                }
            });
        }
     
        public teste() {
            super();
            initialize();
        }
     
        private void initialize() {
            this.setSize(300, 200);
            this.setTitle("JFrame");
        }
    }
     
    class monTextField extends JTextField {
     
        public monTextField(int x, int y, int l, int h) {
            this.setBounds(x, y, l, h);
            JPopupMenu jPopupMenu = new JPopupMenu();
            jPopupMenu.addSeparator();
            this.setComponentPopupMenu(jPopupMenu);
     
            jPopupMenu.add(new Option("Couper", 'X', "Enlève le texte")).addActionListener(new ActionListener() {
     
                public void actionPerformed(ActionEvent e) {
                    monTextField.this.cut();
                }
            });
            jPopupMenu.add(new Option("Copier", 'C', "Copie le texte")).addActionListener(new ActionListener() {
     
                public void actionPerformed(ActionEvent e) {
                    monTextField.this.copy();
                }
            });
            jPopupMenu.add(new Option("Coller", 'V', "Ajoute le texte copier")).addActionListener(new ActionListener() {
     
                public void actionPerformed(ActionEvent e) {
                    monTextField.this.paste();
                }
            });
        }
     
        private class Option extends JMenuItem {
     
            public Option(String intitulé, char raccourci, String aide) {
                super(intitulé, new ImageIcon(intitulé.toLowerCase() + ".gif"));
                setAccelerator(KeyStroke.getKeyStroke("control " + raccourci));
                setToolTipText(aide);
            }
        }
    }

  10. #10
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    679
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 679
    Par défaut
    merci pour cette solution mais ça m'arrange pas
    car je veux bien garder cette partie que tu l'as supprimé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    private JTextField getJTextField() {
    		if (jTextField == null) {
    			jTextField = new JTextField();
    			 jTextField.setBounds(new Rectangle(90, 12, 118, 42));
     
    		}
    si tu enlève cette partie de code je ne peux pas manipuler composant et disparu sur frame
    j'utilise eclipse

    est ce que il y a d'autre moyen pour ça

  11. #11
    Membre Expert
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Par défaut
    Salut,


    Citation Envoyé par minooo Voir le message
    si tu enlève cette partie de code je ne peux pas manipuler composant et disparu sur frame
    j'utilise eclipse

    est ce que il y a d'autre moyen pour ça


    Tenter de mettre le code du constructeur de ma classe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public monTextField(int x, int y, int l, int h)
    dans la méthode en ajoutant quelques modifications( je te laisse te débrouiller pour y arriver )

    Chose importante, est que tu dois appliquer cette méthode à chaque JTextField créé et non pas écrire plusieurs
    getJTextField() par JTextField comme tu l'as fait dans ton code.


  12. #12
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    679
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 679
    Par défaut
    Citation Envoyé par slim_java Voir le message
    Salut,






    Tenter de mettre le code du constructeur de ma classe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public monTextField(int x, int y, int l, int h)
    dans la méthode en ajoutant quelques modifications( je te laisse te débrouiller pour y arriver )

    Chose importante, est que tu dois appliquer cette méthode à chaque JTextField créé et non pas écrire plusieurs
    getJTextField() par JTextField comme tu l'as fait dans ton code.



    je ne sais pas comment faire introduire le constructeur a chaque jtextfield

  13. #13
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    679
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 679
    Par défaut
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
     
    jTextField1.setComponentPopupMenu(getJPopupMenu1());
     
     
    	private JPopupMenu getJPopupMenu1() {
    		if (jPopupMenu1 == null) {
    			jPopupMenu1 = new JPopupMenu();
    			jPopupMenu1.add(new Option("Couper", 'X', "Enlève le texte")).addActionListener(new ActionListener() {
    		         public void actionPerformed(ActionEvent e) {
    		           jTextField1.cut();
    		         }
    		      });
     
    			jPopupMenu1.add(new Option("Copier", 'C', "Copie le texte")).addActionListener(new ActionListener() {
    		         public void actionPerformed(ActionEvent e) {
    		        	 jTextField1.copy();
    		         }
    		      });
    		jPopupMenu1.add(new Option("Coller", 'V', "Ajoute le texte copier")).addActionListener(new ActionListener() {
    		         public void actionPerformed(ActionEvent e) {
    		        	 jTextField1.paste();
    		         }
    		      });
    		}
    		return jPopupMenu1;
    	}
    j'ai essayé mais ça fonctionne pas car je suis obligé chaque fois de créer un JPopupMenu et l'affecté au jtextfield
    pour moi pas une solution


    et en plus je n'arrive pas à mettre le constructeur dans la méthode getJTextField()

  14. #14
    Membre Expert
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Par défaut
    Salut,

    Citation Envoyé par minooo Voir le message
    bonsoir qui peut m'aider à généraliser JPopupMenu au lieu d'utiliser plusieurs JPopupMenu

    merci

    On t'as déjà proposé une solution qui fonctionne bien. reste à faire un petit effort de ta part pour arriver à résoudre ton problème.

  15. #15
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    679
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 679
    Par défaut
    Citation Envoyé par slim_java Voir le message
    Salut,




    On t'as déjà proposé une solution qui fonctionne bien. reste à faire un petit effort de ta part pour arriver à résoudre ton problème.


    oui mais je n'arrive pas à résoudre le problème j'ai essayé mais croyez moi je me bloque

Discussions similaires

  1. TreeView et menu contextuel...
    Par agh dans le forum Composants VCL
    Réponses: 6
    Dernier message: 06/04/2009, 13h23
  2. Visibilité commande dans un Menu contextuel
    Par Hamdi dans le forum IHM
    Réponses: 3
    Dernier message: 20/01/2005, 13h29
  3. [Plugin] Ajouter une option au menu contextuel ?
    Par relivio dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 22/03/2004, 17h18
  4. [VB6] menu contextuel dynamique
    Par da40 dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 15/07/2003, 12h53
  5. [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, 12h07

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