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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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

Discussions similaires

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